关于字典:Python中动态无限树结构的解决方案

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]"的数量不同,我该如何使用字典? (请考虑dict[1][1][1]....[1]["data"])。

我可以简单地遍历字典来查找数据,例如

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)

您可以根据需要调整函数以接受字符串而不是数组,我个人更喜欢使用列表而不是搞乱字符串。