You need to enable JavaScript to run this app. Python如何实现嵌套JSON扁平化?将place字段键值合并到外层字典
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现嵌套JSON扁平化?将place字段键值合并到外层字典

Python实现place嵌套字段扁平化合并的方案

你现有代码的逻辑偏差

  • 你通过place_data = json_data[i]['place']取到的place_data,本身就是嵌套在place字段下的地址字典,这个字典内部只有city、district这类地址键,根本不存在名为place的键,你写的del place_data['place']执行时会直接抛出KeyError。
  • 即使成功取出了place对应的嵌套字典,没有把字典内的键值对合并到外层结构,也完全达不到扁平化的效果。

核心实现逻辑

整个流程不需要通过下标循环遍历,直接迭代列表内的每一个字典项即可,操作分3步:

  1. 从每一项中取出place对应的嵌套字典,同时移除外层原有的place专属键
  2. 把嵌套字典内的所有键值对直接合并到外层字典上
  3. 外层的原有字段(id、name、access)会自动保留,无需额外处理

完整可运行代码示例:

import json

# 已解析完成的原始JSON数据
json_data = [
    {
        "id": "101",
        "name": "User1",
        "place": {
            "city": "City1",
            "district": "District1",
            "state": "State1",
            "country": "Country1"
        },
        "access": [{"status": "available"}]
    }
]

for item in json_data:
    # pop一步完成:取出place对应的值、同时从外层删除place键,设置默认空值兼容无place字段的项
    place_detail = item.pop('place', {})
    # 把place内的所有键值对合并到外层字典
    item.update(place_detail)

# 验证输出结果
print(json.dumps(json_data, indent=2, ensure_ascii=False))

特殊场景适配

如果你的数据中存在外层字典和place内部键名重复的情况,默认的update方法会用place内的值覆盖外层原有值。如果需要保留外层原有键、仅追加外层不存在的键,可以把合并逻辑改成逐键判断:

for item in json_data:
    place_detail = item.pop('place', {})
    for key, value in place_detail.items():
        # 仅当外层没有当前键时才追加,避免覆盖原有数据
        if key not in item:
            item[key] = value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 08:24:06