Python提取JSON字段失败求助:复杂API响应索引报错
问题分析与解决
你的报错核心原因是JSON结构里多个层级是列表(数组),而非字典,直接用字符串索引会触发TypeError。从控制台输出的结构可以拆解:
grid_data["data"]是包含单个元素的列表([]包裹),必须用整数索引(如[0])取其中的字典- 该字典内的
data字段同样是列表,需要再次用[0]取元素 generationmix是包含多种燃料信息的列表,每个元素是{fuel: xxx, perc: xxx}的字典
修正后的代码
import requests import json response = requests.get(grid_url) grid_data = json.loads(response.text) # 逐层解析列表和字典 region_data = grid_data["data"][0] # 取第一个区域数据 intensity_data = region_data["data"][0] # 取第一个时段的数据 generation_mix = intensity_data["generationmix"] # 遍历找到coal对应的百分比 coal_perc = next(item["perc"] for item in generation_mix if item["fuel"] == "coal") print(f"coal={coal_perc}")
代码说明
- 用
[0]索引取出列表中的唯一元素(你的返回结果里每个列表仅含一个元素) - 通过生成器表达式遍历
generationmix列表,匹配fuel为coal的项,直接取出其perc值 - 用f-string格式化输出,避免原代码中数字与字符串拼接的类型错误
内容的提问来源于stack exchange,提问作者Geo
相关产品推荐
相关产品推荐

