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

如何将嵌套字典的内层键值对提取并追加到外层字典?

嵌套字典扁平化方案(适配Pandas DataFrame转换)

需求背景

在将API响应转换为Pandas DataFrame时,需要把嵌套字典扁平化——提取内层字典的键值对,用下划线拼接层级路径作为新键,合并成单层字典,这样就能直接转为DataFrame。没找到现成的适配方案,自己基于递归思路实现了一套,欢迎大家指出问题或提供已有解决方案。

输入示例

dict1 = {'outside_dict': {'middle_dict1': {'innerDict': 1}, 'middle_dict2' : 2},'innerDict': 3}

dict2 = {'outside_dict': {'middle_dict1': {'innerDict': 1}, },}

输出示例

dict1 = {'innerDict': 3, 'middle_dict2_outside_dict': 2, 'innerDict_middle_dict1_outside_dict': 1}

dict2 = {'innerDict_middle_dict1_outside_dict': 1}

实现代码

def flatten_dict(nested_dict, parent_key='', sep='_'):
    items = []
    for k, v in nested_dict.items():
        # 拼接当前键与父层级键,生成新键
        new_key = f"{k}{sep}{parent_key}" if parent_key else k
        if isinstance(v, dict):
            # 递归处理内层字典
            items.extend(flatten_dict(v, new_key, sep).items())
        else:
            # 非字典值直接加入结果列表
            items.append((new_key, v))
    return dict(items)

代码逻辑说明

  • 采用递归方式遍历所有层级的字典键值对
  • 新键规则:当前键 + 下划线 + 父层级键(最外层无父键则直接用当前键)
  • 遇到嵌套字典时继续递归拆解,直到拿到非字典类型的值
  • 最终将所有键值对整理为单层字典

测试验证

dict1 = {'outside_dict': {'middle_dict1': {'innerDict': 1}, 'middle_dict2' : 2},'innerDict': 3}
dict2 = {'outside_dict': {'middle_dict1': {'innerDict': 1}, },}

print(flatten_dict(dict1))
# 输出: {'innerDict': 3, 'middle_dict2_outside_dict': 2, 'innerDict_middle_dict1_outside_dict': 1}

print(flatten_dict(dict2))
# 输出: {'innerDict_middle_dict1_outside_dict': 1}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:57:13