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

Python嵌套字典赋值异常求助:重复引用致值覆盖

问题原因分析

你遇到的问题核心是Python中可变对象的引用传递特性:

  • 你在循环外部只初始化了一次new_dict = {},这个字典在内存中是一个固定的可变对象。
  • 每次循环里你只是修改这个new_dict的键值对,并没有创建新的字典实例。
  • 执行newest_dict[k] = new_dict时,你存入的不是当前new_dict的内容副本,而是这个字典对象的内存引用。
  • 第二次循环时,你修改了同一个new_dict的内容,由于newest_dict中的两个键指向的是同一个字典引用,最终两个子字典的内容会完全一致(都是最后一次循环修改后的结果)。
修复方案

要解决这个问题,需要确保每次循环都创建独立的字典对象,避免复用同一个引用:

newest_dict = {}
row = 2

for k,v in dict.items():
    # 每次循环初始化新的字典,保证每个键对应独立的子字典
    new_dict = {}
    for i,j in v.items():
        j = ws[j+str(row)].value
        new_dict[i] = j
    
    print(k)
    print(new_dict)
    print("------")

    newest_dict[k] = new_dict   
    print(newest_dict)
    row += 1

print(newest_dict)

另一种可选方案是在赋值时复制当前new_dict的内容,比如使用newest_dict[k] = new_dict.copy(),但前者的逻辑更直接清晰,避免潜在的引用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:12:10