Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中动态无限树结构的解决方案_Python_Dictionary_Tree_Nested - Fatal编程技术网

Python中动态无限树结构的解决方案

Python中动态无限树结构的解决方案,python,dictionary,tree,nested,Python,Dictionary,Tree,Nested,我试图构建一个树结构,从点1开始,它可以分支到infinte方向。每个点都可以路径进入无限多个其他点(1.1、1.2、1.3等),这些点中的每个点也可以路径进入无限多个点(1.1.1、1.2.1、1.2.2等) 我的计划是在每个点存储一个对象,并能够通过位置1.1.1等引用它们。我还决定动态生成每个点,因此树从1开始,在创建对象时仅分支 由于我倾向于使事情过于复杂,所以我使用了嵌套字典,因此我可以使用dict[1][1][“data”]引用对象,但我正在努力使用无限嵌套字典: 如果“[1]”的数

我试图构建一个树结构,从点1开始,它可以分支到infinte方向。每个点都可以路径进入无限多个其他点(1.1、1.2、1.3等),这些点中的每个点也可以路径进入无限多个点(1.1.1、1.2.1、1.2.2等)

我的计划是在每个点存储一个对象,并能够通过位置1.1.1等引用它们。我还决定动态生成每个点,因此树从1开始,在创建对象时仅分支

由于我倾向于使事情过于复杂,所以我使用了嵌套字典,因此我可以使用dict[1][1][“data”]引用对象,但我正在努力使用无限嵌套字典:

如果“[1]”的数量不同,如何使用词典?(想想看,
dict[1][1][1]…[1][“数据”]

我可以简单地通过dict循环查找数据,如

for i in [1.1.1]:
    point = dict[i]
但是当“[1]”的数量未知时,我找不到打开新字典分支或存储数据的方法


基本上,我想知道是否存在一个更简单的解决方案,以及如何处理太多嵌套的“[]”方括号。

您可能需要一种不同于使用
[]
的方法来检索值,因为正如您所说的,当您不知道某个内容有多深时,很难做到这一点

相反,您可以使用简单的递归函数,并使用键列表而不是字符串:

def fetch_字段(子树,键列表):
如果不是键列表:
返回子树[“数据”]
返回fetch_字段(子树[key_list[0]],key_list[1:])
key=“1.2.1.3”
#不要使用字符串,而是将其拆分为一个列表:
key=key.split(“.”)
fetch_字段(树、键)

如果愿意,您可以调整函数以接受字符串而不是数组。我个人更喜欢使用列表而不是字符串。

您的问题是如何构造此嵌套dict或从中检索值?