gpt4 book ai didi

python - 如何在 Python 中动态构建树

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:31 25 4
gpt4 key购买 nike

一个初学者 Python/编程问题...我想用 Python 构建一个树结构,最好基于字典。我找到了可以巧妙地做到这一点的代码:

Tree = lambda: collections.defaultdict(Tree)
root = Tree()

这可以很容易地填充为:

 root['toplevel']['secondlevel']['thirdlevel'] = 1
root['toplevel']['anotherLevel'] = 2
...etc.

我想动态地填充层级/树叶,以便我可以根据需要添加尽可能多的层级,以及树叶可以位于任何层级的位置。我该怎么做?

非常感谢任何帮助。

最佳答案

你可以简单地用一个效用函数来做,就像这样

def add_element(root, path, data):
reduce(lambda x, y: x[y], path[:-1], root)[path[-1]] = data

你可以像这样使用它

import collections
tree = lambda: collections.defaultdict(tree)
root = tree()
add_element(root, ['toplevel', 'secondlevel', 'thirdlevel'], 1)
add_element(root, ['toplevel', 'anotherlevel'], 2)
print root

输出

defaultdict(<function <lambda> at 0x7f1145eac7d0>,
{'toplevel': defaultdict(<function <lambda> at 0x7f1145eac7d0>,
{'secondlevel': defaultdict(<function <lambda> at 0x7f1145eac7d0>,
{'thirdlevel': 1}),
'anotherlevel': 2
})
})

如果你想以递归方式实现它,你可以获取第一个元素并从当前 root 获取子对象并从 path 中删除第一个元素,用于下一次迭代。

def add_element(root, path, data):
if len(path) == 1:
root[path[0]] = data
else:
add_element(root[path[0]], path[1:], data)

关于python - 如何在 Python 中动态构建树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com