Python中API响应JSON数据赋值变量时报TypeError的解决方法
问题原因
你收到的报错
TypeError: list indices must be integers or slices, not str
核心原因是JSON返回结构中,results和locations两个字段都是数组类型,对应Python中的列表结构,列表只能用整数下标或者切片访问,不能直接传入字符串作为索引。
正确提取代码
如果你确定只需要取返回的第一个查询结果、第一个匹配地点的纬度值,补全列表下标即可:
locationLat = json_data["results"][0]["locations"][0]["latLng"]["lat"]
多结果适配方案
如果接口可能返回多个查询结果、或者一个结果匹配多个地点,建议通过遍历的方式提取所有纬度值,避免下标越界或者漏取数据:
lat_list = [] # 遍历所有查询结果 for res in json_data["results"]: # 遍历单个结果下的所有匹配地点 for loc in res["locations"]: lat_list.append(loc["latLng"]["lat"])
需要取第一个纬度时直接访问lat_list[0]即可。
内容的提问来源于stack exchange,提问作者Jonathan Langford
相关产品推荐
相关产品推荐

