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

Python循环赋值嵌套字典时所有条目值相同的原因及解决方法

问题解答

为什么所有值都相同

Python中的字典属于可变对象,你代码中的updated_payload = payload并没有生成新的字典,只是给同一个内存地址的原始payload对象加了一个新的别名引用。你每次循环修改StartIndex属性时,实际修改的都是同一个payload对象,而字典x中存储的三个值全部指向该对象的内存地址,所以最终所有条目都会显示最后一次修改的数值3。

修正方案

因为你的payload是多层嵌套的字典结构,需要用深拷贝生成完全独立的新字典,避免引用共享问题,修改后的代码如下:

import copy

start = 1
for i in range(3):
    # 每次循环生成独立的深拷贝对象
    updated_payload = copy.deepcopy(payload)
    updated_payload["params"]["dsoJsonData"]["ReadMap"]["Some"]["StartIndex"] = start
    x[i] = updated_payload
    start += 1

补充说明

  • 如果你的payload是单层字典结构,也可以用updated_payload = payload.copy()做浅拷贝,性能更高;但多层嵌套场景必须用深拷贝才能保证内层字典完全独立
  • 深拷贝不会修改原始payload的值,不会影响其他引用该变量的业务逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:54:01