附加嵌套词典

Bob*_*Bob 8 python dictionary

如果您有一个嵌套字典,其中每个"外部"键可以映射到具有多个键的字典,那么如何向"内部"字典添加新键?例如,我有一个列表,其中每个元素由3个组件组成:外键,内键和值(AB 10).

这是我到目前为止的循环

for e in keyList:
    nested_dict[e[0]] = {e[2] : e[3:]}
Run Code Online (Sandbox Code Playgroud)

现在,不是将新键:值添加到内部字典中,而是将任何新键:值直接替换为内部字典.

例如,假设keyList只是[(AB 10),(AD 15)].该循环的结果是

{'A' : {'D' : 15}}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点,而不是它

{'A' : {'B' : 10, 'D' : 15}}
Run Code Online (Sandbox Code Playgroud)

Łuk*_*ski 19

您告诉您的代码将新创建的dict分配给key e[0].它总是盲目地替换,它不会查看以前存储的值.

相反,你需要这样的东西:

for e in keyList:
    if e[0] not in nested_dict:
        nested_dict[e[0]] = {}
    nested_dict[e[0]].update({e[2] : e[3:]})
Run Code Online (Sandbox Code Playgroud)

If处理'第一关键'的情况需要条件.或者defaultdict可以使用.

from collections import defaultdict
nested_dict = defaultdict(dict)
for e in keyList:
    nested_dict[e[0]].update({e[2] : e[3:]})
Run Code Online (Sandbox Code Playgroud)