0

如果我有以下 python dict“mydict”:

mydict = {
       "folder": "myfolder",
       "files": [
    { "folder": "subfolder",
    "files": []
    },
    { "folder": "anotherfolder",
    "files": [
    { "folder": "subsubfolder",
    "files": []
    },
    { "folder": "subotherfolder",
    "files": []
    }
    ]
    },
         ]
    }

如果我有另一个字典“newdict”,我怎样才能做到这一点:

newdict = {
"folder":"newfolder"
"files":[]
}

如何/是否可以编写一个带有两个参数的函数(“要添加到的当前字典”、“我想添加的字典”、“文件夹名到插入下”,这样在调用函数后:

desiredfunction(mydict, newdict, "subsubfolder")

我希望该函数在我现有的“mydict”中搜索适当的“files”数组以附加“newdict”。

mydict = {
       "folder": "myfolder",
       "files": [
    { "folder": "subfolder",
    "files": []
    },
    { "folder": "anotherfolder",
    "files": [
    { "folder": "subsubfolder",
    "files": [
{
"folder":"newfolder"
"files":[]
}
]
    },
    { "folder": "subotherfolder",
    "files": []
    }
    ]
    },
         ]
    }

做这个的最好方式是什么?我不知道如何/是否可以搜索现有的字典结构,在嵌套字典的多个级别中搜索以适当地插入新的字典,感谢帮助。

4

1 回答 1

0

如果您知道数据结构的形状(嵌套级别的数量、类型等),您可以编写一个包含适当数量的 for 循环的过程来遍历数据结构并找到键。

如果不知道数据结构的形状,可以递归遍历数据结构,直到它为空或找到合适的键。

编辑:哦,你想在旧字典中添加一个新字典。我以为您想将旧字典中的某些内容添加到新字典中。

前任。如果您想在字典中的键“z”下插入“某物”,并且您始终知道该字典的外观,

example = {0: {'a': 'dummy'}, 1: {'z': 'dummy'}}
for thing1 in example:
    for thing2 in thing1:
        if thing2 == 'z':
            example[thing1][thing2] = 'something'

如果你不知道 dict 会是什么样子,或者你不想硬编码 for 循环,

example = {0: {'a': 'dummy'}, 1: {'b': {'z': 'dummy'}}}
replacement = 'something'
path = [1, 'b', 'z']

parent = example
while path:
    key = path.pop(0)
    if path:
        parent = parent[key]
    else:
        parent[key] = replacement

print example

wherepath可以作为参数传递给遍历字典的递归过程的递归调用。

于 2013-01-17T04:29:38.820 回答