Python中如何使用for循环合并嵌套字典完成值映射替换
Python 嵌套字典合并实现方案
你的需求核心是将dict1最内层列表中的字符串引用,替换为dict2中对应同名的完整字典结构,不需要拆分dict2内部的子字典内容,直接整体复用即可。你原来梳理的四层循环多了不必要的最后一层遍历,无需单独处理dict2内部的键值对。
易读的循环实现版本
# 初始化目标字典 dict3 = {} # 遍历dict1第一层键,示例中为 'nested_dict_1' for level1_key in dict1: dict3[level1_key] = {} # 遍历当前层级下的x/y/z类键 for level2_key, ref_list in dict1[level1_key].items(): # 将引用列表转换为字典:键为列表内的字符串,值为dict2中对应的完整字典 dict3[level1_key][level2_key] = { ref_name: dict2[level1_key][ref_name] for ref_name in ref_list }
如果后续修改dict3的内容时不想影响原dict2的数据,可以导入copy模块,将dict2[level1_key][ref_name]替换为copy.deepcopy(dict2[level1_key][ref_name])实现深拷贝。
简洁的字典推导式版本
import copy dict3 = { level1_key: { level2_key: {ref: copy.deepcopy(dict2[level1_key][ref]) for ref in ref_list} for level2_key, ref_list in dict1[level1_key].items() } for level1_key in dict1 }
你之前的写法之所以失效,是因为混淆了字典键和值的引用逻辑,且额外遍历了dict2的内部子项,不需要拆分dict2的结构,直接把整个嵌套字典作为值赋值即可。
内容的提问来源于stack exchange,提问作者Fhtsm
相关产品推荐
相关产品推荐

