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

仅持有最终层键值对时如何填充Python嵌套字典

实现方法

核心思路是递归遍历嵌套字典的所有层级,遇到叶子节点键时,直接从扁平字典中取出对应值替换即可,不需要硬编码固定的字典层级,可适配任意嵌套深度的场景。

实现代码

def fill_nested_dict(nested_dict: dict, flat_kv: dict) -> dict:
    for key, val in nested_dict.items():
        # 当前值是字典时,递归进入下一层遍历
        if isinstance(val, dict):
            fill_nested_dict(val, flat_kv)
        # 当前键存在于扁平映射中时,替换为对应值
        elif key in flat_kv:
            nested_dict[key] = flat_kv[key]
    return nested_dict

使用方式

如果不需要保留原始嵌套字典的内容,可以直接传入原字典调用:

dict_out = fill_nested_dict(dict1, dict2)

如果不想修改原始dict1的数据,先做深拷贝再传入即可:

import copy

dict1_clone = copy.deepcopy(dict1)
dict_out = fill_nested_dict(dict1_clone, dict2)

注意事项

  • 你给出的示例代码存在Python语法错误:字典的元素必须是键:值格式,你写的{layer2: {layer3: {a:None, b:None, c:None}}, {d:None, e:None}}中,第二个花括号包裹的{d:None, e:None}没有对应的键,运行时会被识别为集合元素而非字典结构,递归逻辑无法遍历到d、e两个键,实际使用时需要补全这部分的结构,比如将d/e所在字典作为layer2下和layer3平级的键对应值,才能得到你期望的输出。
  • 该实现对键重名的场景默认取最深层的匹配值,如果存在多层同名键需要特殊处理,可以在递归时追加路径参数做精确匹配。

内容的提问来源于stack exchange,提问作者t.pellegrom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:48:26