Python列表中存放字典遇到的问题

本文探讨了在Python中向列表添加字典时遇到的常见问题,解释了为何所有字典元素显示相同值,并提供了解决方案:使用字典的copy()方法确保每个字典独立。通过实例演示了正确的方法,帮助读者避免陷阱。

参考文献:https://blog.csdn.net/qq_29721419/article/details/70310183

试图在列表中存放字典时出了问题

dict1 = {}
list1 = []
for i in range(10):
    dict1['test'] = i
    list1.append(dict1)
print(list1)
# Result : 
[{'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}, {'test': 9}]

这显然不是预期所要的结果,在CSDN查了一下:在使用append方法将字典添加到列表中时,如果改变字典,列表数据也会随之改变,这是因为dict在Python里是object,不属于primitive type(即int、float、string、None、bool)。这意味着你一般操控的是一个指向object(对象)的指针,而非object本身。下面是改善方法:使用copy()

dict1 = {}
list1 = []
for i in range(10):
    dict1['test'] = i
    list1.append(dict1.copy())
print(list1)
# Result:
[{'test': 0}, {'test': 1}, {'test': 2}, {'test': 3}, {'test': 4}, {'test': 5}, {'test': 6}, {'test': 7}, {'test': 8}, {'test': 9}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值