Python合并字典时保留所有键的实现方法咨询
嵌套字典的深度更新问题
Python 标准库没有直接提供实现这种深度更新的内置方法——dict.update()是浅更新逻辑,遇到嵌套字典时会直接用新字典替换旧的嵌套字典,而非递归更新内部的键值对,这就是你遇到原有键被删除的原因。
要实现「仅覆盖重复键、保留原有非重复键」的需求,需要自定义更新逻辑,最常用的是写一个递归的深度更新函数:
def deep_update(target, source): for key, val in source.items(): # 如果当前值是字典,且目标字典对应键也是字典,就递归更新内部 if isinstance(val, dict) and key in target and isinstance(target[key], dict): deep_update(target[key], val) # 否则直接覆盖或新增键值对 else: target[key] = val # 测试示例 a = {"a": {"b": "bbb", "c": "ccc"}} b = {"a": {"b": "aaa"}} deep_update(a, b) print(a) # 输出: {'a': {'b': 'aaa', 'c': 'ccc'}}
这种递归方式能处理任意层级的嵌套字典,逻辑直观易懂。如果你的Python版本是3.11+,也可以结合循环简化实现,但递归依然是最通用的方案。
内容的提问来源于stack exchange,提问作者lazyguylalala
相关产品推荐
相关产品推荐

