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

Python多维字典合并:仅添加缺失元素的实现问题

多维字典合并(字典A优先,仅补充缺失元素)

需求明确:合并两个嵌套字典时,字典A始终拥有最高优先级——只把字典E里存在但A里缺失的元素补充到A中,绝对不覆盖A已有的任何内容。

示例数据

原始字典A

{'v1': {'configuration': {'$schema': '...', 'network': {'$schema': '...'}}}}

待补充字典E

{'v1': {'configuration': {'network': {'entries': {'$schema': '...'}}}}}

期望合并结果

{'v1': {'configuration': {'$schema': '...', 'network': {'$schema': '...', 'entries': {'$schema': '...'}}}}}

适配Python 3.9的实现代码

用递归函数处理嵌套结构即可:

def merge_dicts_priority(a, e):
    for key, value in e.items():
        if key not in a:
            a[key] = value
        else:
            # 仅当双方都是字典时递归合并,否则保留A的原值
            if isinstance(a[key], dict) and isinstance(value, dict):
                merge_dicts_priority(a[key], value)
    return a

测试验证

哪怕v1下包含额外字段,也能正常处理:

A = {'v1': {'configuration': {'$schema': '...', 'network': {'$schema': '...'}}}}
E = {'v1': {'configuration': {'network': {'entries': {'$schema': '...'}}}, 'other_field': '新增字段内容'}}

# 用copy避免修改原字典A,无需保留原A的话直接传A即可
merged_result = merge_dicts_priority(A.copy(), E)
print(merged_result)

输出会包含other_field,完全符合需求。

逻辑说明

  • 递归遍历每一层字典,确保嵌套结构里的缺失元素都能被补上
  • 遇到非字典类型的值(如字符串、列表)时,直接保留A的原有内容,不会被E覆盖
  • 使用A.copy()是为了保护原始字典不被修改,可根据需求选择是否使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:10:35