首页 > 解决方案 > 如何正确更新 Python 嵌套字典中列表类型的值?

问题描述

情况是我想构建一个嵌套字典,其结构如下

{'a': {'1': [], '2': [], '3': [], '4': []},
 'b': {'1': [], '2': [], '3': [], '4': []},
 'c': {'1': [], '2': [], '3': [], '4': []}}

启动部分是

keys = ['a','b','c']
subkeys = ['1','2','3','4']
target_dict = dict.fromkeys(keys, {key: [] for key in subkeys})

然后,我想更新一个子键的值,例如target_dict['a']['1'] = 1,我只想将条目“a-1”设置为 1,并将其他值留空。但是,“a-1”、“b-1”和“c-1”都同时更新。导致结果为

{'a': {'1': 1, '2': [], '3': [], '4': []},
 'b': {'1': 1, '2': [], '3': [], '4': []},
 'c': {'1': 1, '2': [], '3': [], '4': []}}

这种情况的原因是什么,我应该如何解决?谢谢。

标签: pythonpython-3.xlistdictionary

解决方案


问题是target_dict['a'] target_dict['b']并且target_dict['c']似乎保持相同的参考。尝试将您的代码更改为

target_dict = {k: {key: [] for key in subkeys} for k in keys}

推荐阅读