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

如何将列表值赋值给字典列表指定嵌套键,规避浅拷贝导致的赋值错误

问题根因

你遇到的是字典浅拷贝的引用共享问题:Python内置的dict.copy()方法执行浅拷贝,仅复制最外层字典对象,内层嵌套的key1、key2对应的字典为所有拷贝实例共享的同一个对象,因此修改任意一个实例的嵌套键值,所有实例都会同步变更。
注:不要用list作为变量名,会覆盖Python内置的list类型,下文统一替换为values


方案1:深拷贝生成字典列表(改动最小)

用copy模块的deepcopy替换浅拷贝,保证嵌套层级的字典也都是独立实例,原有赋值逻辑无需修改:

import copy

values = [value1, value2, value3]
base_dict = {"key1": {"key2":{"key3": None}}}
# 深拷贝生成完全独立的字典实例
dictionaries = [copy.deepcopy(base_dict) for _ in range(len(values))]

# 原有遍历赋值逻辑可直接使用
for d, val in zip(dictionaries, values):
    d['key1']['key2']['key3'] = val

方案2:直接构造字典列表(无额外依赖)

如果不想引入深拷贝,可直接在生成列表时构造独立的嵌套字典,从根源避免引用共享:

values = [value1, value2, value3]
dictionaries = [{"key1": {"key2": {"key3": None}}} for _ in range(len(values))]

for d, val in zip(dictionaries, values):
    d['key1']['key2']['key3'] = val

极简一行实现

如果字典结构固定,可直接在生成列表时完成赋值,无需额外遍历步骤:

values = [value1, value2, value3]
dictionaries = [{"key1": {"key2": {"key3": val}}} for val in values]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:03