Python3 嵌套字典(Nested Dictionary)覆盖写入的优雅实现方案问询
Python 嵌套字典深度合并方案
无依赖递归实现
这是最通用的方案,不需要额外安装第三方库,支持任意层级的嵌套字典合并:
def deep_merge(origin: dict, overwrite: dict) -> dict: result = origin.copy() for key, value in overwrite.items(): # 如果当前key在两个字典里都是字典类型,就递归合并 if isinstance(value, dict) and key in result and isinstance(result[key], dict): result[key] = deep_merge(result[key], value) # 否则直接用overwrite的值覆盖 else: result[key] = value return result
使用示例:
var_dict_config = deep_merge(var_dict_config, var_dict_config_overwrite)
第三方库实现(适合复杂场景)
如果项目允许引入依赖,可直接使用成熟的deepmerge库,支持自定义列表、集合等复杂类型的合并策略:
- 安装库:
pip install deepmerge - 使用示例:
from deepmerge import always_merger # 合并完成后overwrite的字段会自动覆盖原字典同名字段 var_dict_config = always_merger.merge(var_dict_config.copy(), var_dict_config_overwrite)
注意:上述两种方案默认都不会修改原始的
var_dict_config和var_dict_config_overwrite对象,如果不需要保留原对象,可省略.copy()操作。
内容的提问来源于stack exchange,提问作者Werner Venter
相关产品推荐
相关产品推荐

