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

Python中修改列表内字典值导致全部字典变化的解决办法

问题原因

[{}] * 5的初始化逻辑是创建1个空字典对象后,将该对象的内存引用复制5次存入列表,所以列表中5个元素指向的是同一个字典。你修改任意位置的字典键值,本质上都是修改同一个内存地址的对象,自然所有位置的取值都会同步更新。
另外要注意:不要用list作为自定义变量名,它是Python的内置类型标识符,覆盖后会影响内置list()方法的正常调用。

解决方法

初始化包含可变对象(字典、列表等)的列表时,使用列表推导式生成独立的新对象:

  • 如果你需要初始为空字典的列表:
my_list = [{} for _ in range(5)]
  • 如果你需要每个字典默认携带2组固定键值对,比如初始键为key1、key2,对应默认值为0、"":
my_list = [{"key1": 0, "key2": ""} for _ in range(5)]

修改验证示例:

my_list = [{} for _ in range(5)]
my_list[3]["key"] = 2
my_list[4]["key"] = 5
print(my_list[3]["key"]) # 输出2
print(my_list[4]["key"]) # 输出5

所有字典都是独立对象,修改互不影响。

内容的提问来源于stack exchange,提问作者Daryl Lim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:42:01