Python列表追加字典时的引用陷阱与修复方案
本文分析在Python中将字典追加到列表时,因字典为可变对象且引用同一地址导致所有元素值被最后修改覆盖的问题。通过对比错误代码与正确实现,展示将字典实例化移至循环内部的修复方法,确保每个列表元素拥有独立的数据副本。
在近期的代码编写过程中,我遇到了向列表追加字典的操作场景,具体实现代码如下:
tmp_datas = [{'a': 18}, {'a':20}]
def test(tmp_datas):
tmp_li = []
tmp_dic = {}
for data in tmp_datas:
tmp_dic['age'] = data['a']
tmp_li.append(tmp_dic)
print(tmp_li)
test(tmp_datas)
由于字典属于可变数据类型,上述代码执行后得到的结果为:
# [{'age': 20}, {'age': 20}]
针对该问题的解决办法:把tmp_di放在里面即可
tmp_datas = [{'a': 18}, {'a':20}]
def test(tmp_datas):
tmp_li = []
for data in tmp_datas:
tmp_dic = {}
tmp_dic['age'] = data['a']
tmp_li.append(tmp_dic)
print(tmp_li)
test(tmp_datas)
需要注意,如果tmp_datas直接使用而不经由此种方式处理,通常不会出现此类问题。
总结
本文内容到此结束,希望上述分析能为您提供帮助,同时也欢迎您持续关注本站以获取更多技术资讯!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









