You need to enable JavaScript to run this app. Python如何实现嵌套字典的深度更新且不丢失原有非匹配键
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现嵌套字典的深度更新且不丢失原有非匹配键

嵌套字典增量更新最优实现

Python 内置的dict.update()为浅更新逻辑,遇到嵌套字典会直接替换整个值,导致原嵌套结构中未指定的键丢失。要实现仅更新匹配键、保留原有未涉及键的效果,最优方案是实现轻量递归深度更新函数,无需依赖第三方库,兼容任意深度的嵌套字典结构:

def deep_update(original: dict, update_content: dict) -> dict:
    for k, v in update_content.items():
        # 若当前键两侧均为字典类型,递归进入内层更新
        if isinstance(v, dict) and k in original and isinstance(original[k], dict):
            deep_update(original[k], v)
        # 其余场景直接覆盖赋值,和内置update行为一致
        else:
            original[k] = v
    return original

效果测试

针对你给出的场景测试结果如下:

student = {"name":"Mike","class":{"grade":10,"section":"b"}}
new_dict = {"class":{"section":"c"}}

deep_update(student, new_dict)
print(student)
# 输出:{'name': 'Mike', 'class': {'grade': 10, 'section': 'c'}}

方案优势

  • 纯原生实现无外部依赖,适配所有主流Python版本,比引入第三方库的方案更轻量
  • 支持任意层数的嵌套字典增量更新,逻辑简洁无冗余
  • 非字典类型值的更新逻辑和内置update()完全一致,符合使用直觉

提示:如果需要保留原字典不被修改,可以先对原字典做深拷贝再传入函数:

import copy
new_student = deep_update(copy.deepcopy(student), new_dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:27:01