【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)、要么为不可变对象(数字、元祖、字符串)。千万不要初始化为可变对象(列表,字典)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值