附加嵌套词典

2024-04-20 10:55:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我到目前为止的循环

for e in keyList:
    nested_dict[e[0]] = {e[2] : e[3:]}

现在,不是将新的key:value添加到内部字典,而是直接替换内部字典。

例如,假设keyList只是[(A B 10),(A D 15)]。循环的结果是

{'A' : {'D' : 15}}

我怎么能让它变成

{'A' : {'B' : 10, 'D' : 15}}

Tags: keyin元素列表for字典value组件
1条回答
网友
1楼 · 发布于 2024-04-20 10:55:00

您告诉代码将新创建的dict分配给键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:]})

If处理“first key”情况需要条件。或者可以使用defaultdict

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

相关问题 更多 >