我的表格如下所示:
id | parentid | name
---------------------
1 | 0 | parent1
---------------------
2 | 0 | parent2
---------------------
3 | 1 | child1
---------------------
4 | 3 | subchild1
我现在正在尝试想出一种有效的方法来获取数据库数据并创建 Python 字典。
基本上,我希望能够做到:
tree = expand(Session.query(mytable).all())
print tree['parent2']['child2']
# result would be 'subchild1'
我完全不知道如何做到这一点...我一直在摆弄以下功能,但我无法让它工作。任何帮助将不胜感激。
def expand(tree):
parents = [i for i in tree if i.parentid == 0]
for parent in parents:
children = expand(parent)
最佳答案
如果我理解正确的话,父 id 为 0 的项目是根项目还是第一级?
如果是这样,您的方法应如下所示:
def expand(tree, id):
expanded_tree = {}
parents = [i for i in tree if i.parentid == id]
for parent in parents:
expanded_tree[parent.name] = expand(tree, parent.id)
return expanded_tree
你可以这样开始:
tree = expand(Session.query(mytable).all(), 0)
关于python - 尝试提出一个递归函数来扩展Python中的树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467723/