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

Python中修改字典列表元素异常:结果与预期不符如何解决?

问题分析与解决方案

问题原因

你当前的代码里,leg = [d for i in range(2)]并没有创建两个独立的字典,而是把同一个字典对象d的引用重复添加到了列表里。也就是说,leg[0]和leg[1]指向的是内存中同一个字典。所以当你第一次循环修改leg[0]['sym']时,字典内容变成A0;第二次循环修改leg[1]['sym']时,其实还是修改同一个字典,把A0改成了A01,最后打印的两个元素自然都是同一个字典的内容。

修复方案

有两种常见的正确写法:

方案1:直接在推导式中创建新字典

每次循环生成一个全新的字典,确保列表元素是独立对象:

leg = [{'sym':'A'} for i in range(2)]
for i in range(2):
    leg[i]['sym'] = leg[i]['sym']+str(i)
print(leg)

方案2:复制原字典

如果原字典d内容复杂,不想重复编写,可以用dict.copy()创建原字典的浅拷贝,让每个列表元素都是独立字典:

d={'sym':'A'}
leg = [d.copy() for i in range(2)]
for i in range(2):
    leg[i]['sym'] = leg[i]['sym']+str(i)
print(leg)

两种方式运行后都会输出预期结果:[{'sym': 'A0'}, {'sym': 'A1'}]

内容的提问来源于stack exchange,提问作者PUJA DUTTA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:25:16