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

如何用Python将嵌套JSON转换为指定键值对格式?

JSON格式转换问题修复

原始JSON数据

{"Africa":
    {
        "invitee_event_type_page":
        {
            "Total Events": "194"
        },
        "invitee_meeting_cancelled":
        {
            "Total Events": "9"
        }
    },
    "Asia":
    {
        "invitee_event_type_page":
        {
            "Total Events": "127"
        },
        "invitee_meeting_scheduled":
        {
            "Total Events": "16"
        }
    }
}

目标输出格式

output = [{"Asia - invitee_event_type_page": 127, "Asia - invitee_meeting_scheduled":16, "Africa - invitee_event_type_page": 194,"Africa - invitee_meeting_cancelled":9}]

你的代码问题分析

当前代码存在三个核心问题:

  • 仅处理了Africa区域,完全遗漏Asia的数据
  • 错误地将列表output与字符串key直接拼接,触发TypeError(列表只能和列表拼接,无法直接加字符串)
  • 混淆了列表与字典的使用逻辑:目标结构是列表包裹一个字典,但你试图直接往列表中塞入字符串和数值

修复后的完整代码

import json

# 读取JSON文件内容
with open("ga2.json", "r") as f:
    data = json.load(f)

# 初始化空字典存储最终键值对
result_dict = {}

# 遍历所有大洲数据
for continent, events in data.items():
    # 遍历当前大洲下的所有事件类型
    for event_type, event_detail in events.items():
        # 拼接键名,将字符串类型的事件数转为整数
        key = f"{continent} - {event_type}"
        result_dict[key] = int(event_detail["Total Events"])

# 将字典包装为列表,匹配目标格式
output = [result_dict]
print(output)

代码说明

  1. 移除无用的re模块,仅保留必需的json模块
  2. 通过两层循环遍历所有大洲和事件类型,确保不遗漏任何数据
  3. 使用f-string简洁拼接键名,同时将字符串类型的事件数转为整数,匹配目标输出的数值类型
  4. 最终将构建完成的字典放入列表,完全符合你需要的输出结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:35:48