我正在尝试从具有默认值的列表中创建字典,然后我想出一些奇怪的行为来解释。
这是我尝试过的代码:
mydict = dict.fromkeys([1,2,3], {'value': None})
print(mydict)
# {1: {'value': None}, 2: {'value': None}, 3: {'value': None}}
mydict[1]['value'] = 1
print(mydict)
# {1: {'value': 1}, 2: {'value': 1}, 3: {'value': 1}}
如您所见,当我用dict.fromkeys
定义时,所有值都是None
,但是当我尝试从第一个键值更改值时,所有其他值都更改为我在第一个定义的值。
我知道其他适用于我的解决方案,但我想知道为什么这样做不行。
我已经用谷歌搜索了这个问题,但找不到任何东西。有人建议我This作为答案,但这不是我想要的。