【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。

可以看出,一切正常!

结论

任何变量的初始化赋值,要么为空(None)、要么为不可变对象(数字、元祖、字符串)。千万不要初始化为可变对象(列表,字典)。

发布了397 篇原创文章 · 获赞 541 · 访问量 255万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览