Solutions for a Dynamic Infinite Tree Structure in Python
我正在尝试从第1点开始构建树结构,该树结构可以分支到无限方向。每个点都可以进入无限个其他点(1.1、1.2、1.3,...),并且这些点中的每个点也都可以进入无限个点(1.1.1、1.2.1、1.2.2 ...)。
我的计划是在每个点存储一个对象,并能够通过位置1.1.1等引用它们。另外,我决定动态生成每个点,因此Tree从1开始,并且仅在创建Object时分支。
由于我倾向于使事情复杂化,因此我使用了嵌套字典,因此我可以通过使用dict [1] [1] [" data"]来引用对象,但是我在努力使用无限嵌套字典:
如果" [1]"的数量不同,我该如何使用字典? (请考虑
我可以简单地遍历字典来查找数据,例如
1 2 | for i in [1.1.1]: point = dict[i] |
但是当" [1]"的数量未知时,我找不到打开新词典分支或存储数据的方法。
基本上,我想知道是否存在一个更简单的解决方案,以及如何处理太多嵌套的" []"括号。
您可能希望使用不同于使用
相反,您可以使用简单的递归函数,并为密钥而不是字符串使用列表:
1 2 3 4 5 6 7 8 9 10 | def fetch_field(subtree, key_list): if not key_list: return subtree["data"] return fetch_field(subtree[key_list[0]], key_list[1:]) key ="1.2.1.3" # Instead of using a string, split it into a list: key = key.split(".") fetch_field(tree, key) |
您可以根据需要调整函数以接受字符串而不是数组,我个人更喜欢使用列表而不是搞乱字符串。