如何读取JSON对象中list列表内的嵌套字段并解决KeyError报错
报错原因
json_load['list']的返回值是列表(数组)类型,不是字典类型,不支持直接通过键名取值。你能正常读取json_load['city']['coord'],是因为city字段对应的值直接是字典结构,支持按键名索引;而list字段的值是用[]包裹的有序条目集合,必须先通过下标定位到具体的条目字典,才能继续按键取内部字段。
正确读取方法
- 读取指定位置条目的字段
Python列表下标从0开始计数,要取第1条预报数据里的feels_like、temp,写法如下:# 取list中第1条(下标0)的main节点 main_data = json_load['list'][0]['main'] # 读取体感温度feels_like feels_like = main_data['feels_like'] # 读取温度temp temp = main_data['temp'] print(feels_like, temp) - 批量读取所有条目的字段
数据中cnt字段值为40,代表list数组内共存储40条预报数据,需要读取所有条目的对应字段时直接遍历列表即可:for forecast_item in json_load['list']: feels_like = forecast_item['main']['feels_like'] temp = forecast_item['main']['temp'] print(f"体感温度: {feels_like}, 实时温度: {temp}")
额外提示:单条预报条目里的
weather字段同样是列表类型,读取天气描述、天气图标这类字段时也需要先加下标定位,例如读取第一条条目的天气描述写法为json_load['list'][0]['weather'][0]['description']
内容的提问来源于stack exchange,提问作者Kelvin de Reus
相关产品推荐
相关产品推荐

