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

向parsedData列表添加字典时重复出现最后一个字典的问题

问题原因分析

你遇到的问题核心在于**userData字典是在循环外部定义的**——整个循环过程中,你始终在修改同一个字典对象,然后反复把这个对象的引用添加到parsedData列表里。当循环结束时,这个字典里存的是最后一次循环修改的值,所以列表里的两个元素其实都指向同一个字典,看起来就像是两次添加的都是最后一条数据。

解决方法

有两种简单的修复方式:

方法1:把字典定义移到循环内部

每次循环都创建一个全新的userData字典,这样添加到列表里的都是独立的对象,不会互相干扰:

parsedData = []
jsondict=[{u'Name': u'BILL', u'ID': u'1028', u'CARS': [u'BMW', u'AUDI']}, {u'Name ': u'TOM', u'ID': u'1029', u'CARS': [u'TOYOTA', u'FERRARI']}]
for distro in jsondict:
    userData = {}  # 每次循环都新建一个字典
    userData['Name'] = distro['Name']
    userData['ID'] = distro['ID']
    userData['CARS1'] = distro['CARS'][0]
    userData['CARS2'] = distro['CARS'][1]
    parsedData.append(userData)

方法2:添加时创建字典副本

如果不想移动字典定义,可以在append的时候用copy()方法创建当前字典的副本,这样添加到列表的是独立的副本,而不是原字典的引用:

parsedData = []
userData = {}
jsondict=[{u'Name': u'BILL', u'ID': u'1028', u'CARS': [u'BMW', u'AUDI']}, {u'Name ': u'TOM', u'ID': u'1029', u'CARS': [u'TOYOTA', u'FERRARI']}]
for distro in jsondict:
    userData['Name'] = distro['Name']
    userData['ID'] = distro['ID']
    userData['CARS1'] = distro['CARS'][0]
    userData['CARS2'] = distro['CARS'][1]
    parsedData.append(userData.copy())  # 添加副本而非原引用

另外提个小细节:你的第二个字典里的键是Name (带空格),如果后续要统一处理数据的话,可能需要修正这个不一致的地方哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:24:28