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

如何修改Python字典中存储的二维列表的指定元素?

问题原因

你遇到的是Python可变对象的引用复用问题:

  • 第一次循环向empty_lists添加元素时,两次追加的都是同一个zero_list对象的引用,所以empty_lists里的两个子列表本质是同一个对象,修改任意一个都会同步到另一个
  • 第二次给cache_memory赋值时,两个key对应的都是同一个empty_lists对象的引用,所以cache_memory[0]和cache_memory[1]完全绑定,修改一处会同步到所有对应位置
解决方法

不需要更换实现方案,只要保证每一层级的列表都是独立的新对象即可,因为你这里子元素都是不可变的字符串,用浅拷贝就能满足需求,修改后代码如下:

cache_memory = {}

# 每次调用都生成独立的初始子列表
def generate_zero_list():
    return ["0"] * 2 + ["00"] * 5

for index in range(2):
    # 每个字典key对应独立的二维列表
    current_2d_list = []
    for _ in range(2):
        current_2d_list.append(generate_zero_list())
    cache_memory[index] = current_2d_list

cache_memory[0][0][0] = "1"
print(cache_memory)

运行后输出和你预期的结果完全一致。
如果后续你用到的嵌套结构更深、子元素也包含可变对象,可以用copy模块的deepcopy方法生成完全独立的副本:

from copy import deepcopy

# 示例:对已有列表做完全拷贝,避免引用绑定
cache_memory[index] = deepcopy(exist_2d_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:01