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

数组内字典数据复制输出异常,需修正为指定格式

问题排查与代码修正

问题根源

  1. 字典引用复用:原代码直接将同一个each_tc字典对象多次追加到结果列表中,所有列表元素指向同一个内存地址,后续修改字典内容会同步影响所有列表项。
  2. 名称累加错误:每次循环都在已修改的name值上继续拼接,导致名称出现非预期的累加结果,同时因为引用同一对象,最终所有项的名称都会变成最后一次修改的内容。

修正后的代码

json_data = {"map":[{"name":"test"}]}

def replicator(data, replica=1):
    final_data = {}
    for each_map_tcs in data.keys():
        final_data[each_map_tcs] = []
        original_items = data[each_map_tcs]
        for each_tc in original_items:
            # 保存原始name值,避免累加修改
            original_name = each_tc['name']
            for i in range(replica):
                # 创建字典副本,避免引用同一对象
                new_tc = each_tc.copy()
                new_tc['name'] = f"{original_name}-{i}"
                final_data[each_map_tcs].append(new_tc)
    print(final_data)   

replicator(json_data, 2)

输出结果

运行修正后的代码,输出符合预期:

{'map': [{'name': 'test-0'}, {'name': 'test-1'}]}

关键修改点

  • 创建字典副本:使用each_tc.copy()生成新的字典对象,确保每个列表项都是独立的实例,避免修改一处影响全部。
  • 基于原始名称生成新名称:提前保存原始name值,每次循环都从原始值出发拼接序号,彻底避免累加错误。
  • 提前初始化列表:在遍历子项前先初始化结果列表,减少重复的键存在性判断,让代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:48:17