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

Python字典列表更新sequenceId时实际输出与预期不符问题排查

问题原因
  • 核心是Python中字典是可变对象,你从JSON加载得到的MainNodes列表里存储的是字典的引用,后续多次调用extend(MainNodes)往FinalNodes中添加的都是同一批字典对象的引用,不是独立的新字典。
  • 举例来说:假设MainNodes长度为2,你循环10次执行extend操作,那么FinalNodes[1]、FinalNodes[3]、FinalNodes[5]一直到FinalNodes[19]本质上指向的是同一个字典对象,你给索引19的这个字典赋值sequenceId=38时,前面所有指向该对象的位置的sequenceId都会被同步修改为38,因此最后查看索引7的值会变成最后一次赋值的结果,而非索引7那次循环赋值的14。
解决方法

你只需要在extend时,对MainNodes里的每个字典做浅拷贝即可(如果字典存储的值都是数字、字符串这类不可变类型,浅拷贝完全满足需求),修改构造FinalNodes的逻辑:

#prepare final nodes
FinalNodes = [item.copy() for item in FirstNode]
for i in range(numberofJobs):
    # 每个主节点都拷贝生成新字典,避免引用共享
    FinalNodes.extend([item.copy() for item in MainNodes])
FinalNodes.extend([item.copy() for item in LastNode])

修改后FinalNodes里的每个字典都是独立对象,赋值时不会互相影响,最终FinalNodes[7]['sequenceId']就能输出预期的14。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:45:02