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

Python中循环将字典对象添加到列表时为何会出现数据重复?

问题分析与解决

你碰到的这个问题其实很常见——核心原因是字典对象的引用复用。

你在循环外面只创建了一个datarow字典,每次循环只是修改这个字典里的键值对,而cont.append(datarow)添加的是这个字典的引用,不是新的独立对象。所以数组里的所有元素其实都指向同一个字典,当最后一次循环修改完字典内容后,数组里的所有元素都会显示成最后一次的结果。

修正后的基础版代码

把字典的创建放到循环内部,每次循环都生成一个新的字典对象,避免引用复用:

cont = []
for x in result:
    datarow = {}  # 每次循环新建一个独立字典
    input = x[0]
    response = x[1]
    datarow['input'] = input
    datarow['response'] = response
    print(datarow)
    cont.append(datarow)

更简洁的写法

可以直接在循环里构造字典,省去单独赋值的步骤:

cont = []
for x in result:
    datarow = {'input': x[0], 'response': x[1]}
    print(datarow)
    cont.append(datarow)

高效的列表推导式写法

如果不需要中间的打印步骤,用列表推导式能一步完成,代码更简洁:

cont = [{'input': x[0], 'response': x[1]} for x in result]
print(cont)

这样处理后,cont数组里就会包含两个独立的字典对象,分别对应两组不同的问答内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:32:37