【Python】改编字典中一个key的value值,另一个不相关的key-value值也被改变了。
报错代码简化版:
a = {'k1': {'name': 'name_k1'},
'k2': {'name': 'name_k2'}}
b = dict.fromkeys(a.keys(), {})
for k in a.keys():
print('-------------%s------------------' % k)
print(k)
print("我是b[k2]的值: ", b['k2'])
b[k]["name"] = a[k]["name"]
print("我是b[k2]的值:", b['k2'])
运行结果:
可以看到,本来只将字典a[k1]的值赋值给b[k1],b[k2]的值居然也改变了。
原因:dict.fromkeys()给字典b的所有key赋予了相同的初始值,而碰巧这个初始值是可改变的。
正确做法:用dict.fromkeys()初始化字典时,赋值为不可变变量0或None。
可以看出,一切正常!