gpt4 book ai didi

python - 通过键更改其他键来更新 Python 中的字典

转载 作者:行者123 更新时间:2023-12-03 23:20:27 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Dictionary creation with fromkeys and mutable objects. A surprise [duplicate]

(3 个回答)


去年关闭。




我想使用两个列表作为键创建一个字典

regions = ['A','B','C','D']
subregions = ['north', 'south']
region_dict = dict.fromkeys(regions, dict.fromkeys(subregions))
这产生了我想要的正确的字典:
{'A': {'north': None, 'south': None},
'B': {'north': None, 'south': None},
'C': {'north': None, 'south': None},
'D': {'north': None, 'south': None}}
但是,如果我尝试更新此 dict 中的元素之一,我会看到其他元素也在更新
region_dict['A']['north']=1
>>> {'A': {'north': 1, 'south': None},
'B': {'north': 1, 'south': None},
'C': {'north': 1, 'south': None},
'D': {'north': 1, 'south': None}}
我不确定我在这里做错了什么。如何仅更新此字典中的一个值?

最佳答案

您不能使用 dict.fromkeys当每个键使用的值是可变的时;它使用与每个键的值相同值的别名,因此无论您查找哪个键,您都会获得相同的值。基本上是the same problem that occurs with multiplying lists of lists .一个简单的解决方案是更换外dict.fromkeysdict理解:

region_dict = {region: dict.fromkeys(subregions) for region in regions}

关于python - 通过键更改其他键来更新 Python 中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63136214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com