python - 尝试提出一个递归函数来扩展Python中的树

标签 python recursion tree

我的表格如下所示:

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/

相关文章:

python - 如何解决解析带有西里尔符号的 html 文件的问题?

python - 如何将文件夹下的所有bytes文件转换为图片

c - 递归和静态变量

c++ - 你如何在 C++ 中制作树数据结构?

arrays - O(kn log n) 的平衡 K-D 树算法

Python SSL证书根据通用名称检查主机名

python - 如何提交仅给出 HTML 源的表单?

python - 有没有办法将脚本中的答案列表转换为产生的值?

java - 为什么二叉树的插入方法中根总是为空

java - 在 Java 中使用 JAXB 序列化树结构