如果您有嵌套字典,其中每个“外部”键可以映射到具有多个键的字典,那么如何向“内部”字典添加新键?例如,我有一个列表,其中每个元素由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}}
答案 0 :(得分:14)
您告诉您的代码将新创建的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
条件才能处理第一个密钥'案件。或者可以使用defaultdict
。
from collections import defaultdict
nested_dict = defaultdict(dict)
for e in keyList:
nested_dict[e[0]].update({e[2] : e[3:]})