You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典列表追加同键名不同值时所有元素值一致问题求解

问题原因

Python 中的字典属于可变对象,你在循环外部只初始化了一次字典d,后续每次向列表中追加元素时,实际追加的是同一个字典对象的内存引用,而非字典内容的独立副本。
因此你每次修改d['a']的值时,修改的是内存中唯一的那个字典对象,列表中所有指向该地址的元素自然会同步更新,最终所有元素都显示最后一次修改后的值。

解决办法

你可以通过以下任意一种方式解决该问题:

  • 方式1:将字典的初始化放到循环内部,每次循环生成全新的独立字典
l = []
for i in range(0,4):
    d = {}
    d['a'] = i
    l.append(d)
print(l)
  • 方式2:追加字典时调用copy()方法生成浅拷贝,存入列表的是独立副本
l = []
d = {}
for i in range(0,4):
    d['a'] = i
    l.append(d.copy())
print(l)
  • 方式3:使用列表推导式直接生成结果,写法更简洁
l = [{'a': i} for i in range(4)]
print(l)

以上三种方式运行后都会得到你预期的输出:

[{'a': 0}, {'a': 1}, {'a': 2}, {'a': 3}]

内容的提问来源于stack exchange,提问作者Kamakshi Trivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:45:03