【发布时间】:2021-11-05 02:15:47
【问题描述】:
情况是我想构建一个嵌套字典,其结构如下
{'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': []}}
这种情况的原因是什么,我应该如何解决?谢谢。
【问题讨论】:
-
基本上,不要将可变对象与
dict.fromkeys()一起使用 -
考虑阅读标准库中
collections模块中的defaultdict。在这里可能会有所帮助。
标签: python python-3.x list dictionary