You need to enable JavaScript to run this app. Python实现嵌套字典相同值替换及合并的操作方法
优惠活动
大模型
产品
解决方案
定价
更多

Python实现嵌套字典相同值替换及合并的操作方法

Python嵌套字典合并实现

你需要的是以dict_2的值为高优先级,合并dict_1的独有条目,以下是对应实现:

固定层级场景实现(适配你给出的3层结构)

import copy

dict_1 = {
    "AR": {
        "tom": {"q": 1.0},
        "jerry": {"q": 1.0},
        "spike": {"q": 1.0}
    },
    "DB": {
        "goku": {"q": 1.0},
        "vegeta": {"q": 2.0},
        "gohan": {"q": 1.0},
        "trunks": {"q": 1.0},
    },
}

dict_2 = {
    "AR": {
        "tom": {"q": 1.0}
    },
    "DB": {
        "goku": {"q": 1.0}
    },
}

# 以dict_2为基础初始化结果字典,深拷贝避免修改原dict_2
dict_3 = copy.deepcopy(dict_2)

for first_key, second_dict in dict_1.items():
    # 一级键不存在直接添加整组值
    if first_key not in dict_3:
        dict_3[first_key] = second_dict
        continue
    # 一级键存在时仅补充不存在的二级键
    for second_key, val in second_dict.items():
        if second_key not in dict_3[first_key]:
            dict_3[first_key][second_key] = val

执行后dict_3的结构完全符合你要求的输出:

{
    "AR": {
        "tom": {"q": 1.0},
        "jerry": {"q": 1.0},
        "spike": {"q": 1.0}
    },
    "DB": {
        "goku": {"q": 1.0},
        "vegeta": {"q": 2.0},
        "gohan": {"q": 1.0},
        "trunks": {"q": 1.0}
    }
}

通用多层嵌套合并实现(适配任意深度嵌套字典)

如果后续你的字典嵌套层级有变化,可以用递归合并函数:

import copy

def merge_priority_dict(priority_dict, add_dict):
    """
    合并两个嵌套字典,priority_dict的键值优先级更高,重复键保留其取值
    add_dict中独有的键会补充到结果中
    """
    result = copy.deepcopy(priority_dict)
    for k, v in add_dict.items():
        if k not in result:
            result[k] = v
        else:
            # 两者都是字典时递归合并
            if isinstance(v, dict) and isinstance(result[k], dict):
                result[k] = merge_priority_dict(result[k], v)
    return result

# 调用方法
dict_3 = merge_priority_dict(dict_2, dict_1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:45:10