Python中动态无限树结构的解决方案
我试图构建一个树结构,从点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]”的数量不同,如何使用词典?(想想看,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]”的数
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或从中检索值?