Python调用OpenWeatherMap API提取温值报错:string indices must be integers
TypeError: string indices must be integers 错误排查与解决
错误原因
js["list"][0]["main"]是一个字典对象,Python中直接遍历字典时,默认迭代的是字典的键(即字符串类型,比如'temp'、'temp_min')。你的代码里res是这些字符串键,却试图用res["main.temp_min"]去索引它——字符串只能用整数下标访问,因此触发TypeError。
解决方法
根据你的需求选择对应代码:
1. 获取第一个预报时段的最低/最高温度
直接通过字典键访问,无需循环:
main_data = js["list"][0]["main"] print("最低温度:", main_data["temp_min"]) print("最高温度:", main_data["temp_max"])
2. 遍历所有预报时段的最低/最高温度
循环遍历list中的每个预报条目,再提取对应数据:
for forecast in js["list"]: main_info = forecast["main"] time = forecast["dt_txt"] print(f"{time} - 最低温度: {main_info['temp_min']}, 最高温度: {main_info['temp_max']}")
3. 遍历main字典的所有键值对
如果需要查看main下的所有字段,使用.items()方法遍历键和值:
main_data = js["list"][0]["main"] for key, value in main_data.items(): print(f"{key}: {value}")
内容的提问来源于stack exchange,提问作者Borja Alamo
相关产品推荐
相关产品推荐

