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

如何在Python中将嵌套字典转为键用点(.)表示的扁平字典?

实现嵌套字典转扁平字典(键以点分隔)

需求说明

输入嵌套字典:

a = {
    "name": "a",
    "address": {
        "state": "b",
        "full": {
            "city": "c"
        }
    }
}

期望输出扁平字典:

{
    "name": "a",
    "address.state": "b",
    "address.full.city": "c"
}

解决方案

用递归方式处理嵌套结构,遍历键值对时遇到子字典就递归拼接键名,直到遇到非字典值:

def flatten_dict(nested_dict, prefix=""):
    flat_dict = {}
    for key, value in nested_dict.items():
        # 拼接当前层级的键名
        current_key = f"{prefix}.{key}" if prefix else key
        if isinstance(value, dict):
            # 递归处理子字典并合并结果
            flat_dict.update(flatten_dict(value, current_key))
        else:
            # 非字典值直接加入扁平字典
            flat_dict[current_key] = value
    return flat_dict

# 测试示例
a = {
    "name": "a",
    "address": {
        "state": "b",
        "full": {
            "city": "c"
        }
    }
}

result = flatten_dict(a)
print(result)

代码解释

  • 函数flatten_dict接收待处理的嵌套字典和当前键的前缀(默认空字符串对应顶层键)。
  • 遍历每个键值对:
    • 若值是字典,递归调用自身并传入拼接后的键作为新前缀,将递归返回的结果合并到当前字典。
    • 若值不是字典,直接将拼接好的键和对应值加入结果字典。
  • 最终返回完整的扁平字典。

运行代码后输出结果与期望一致:

{'name': 'a', 'address.state': 'b', 'address.full.city': 'c'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:20:29