Python中如何提取数组元素的geo_lon与geo_lat属性?
问题:提取数组中的
geo_lon和geo_lat属性时触发TypeError 我有多个类似如下的数组,需要提取其中的geo_lon和geo_lat属性:
[{'value': '658747', 'unrestricted_value': 'Алтайский край, Крутихинский р-н, с Волчно-Бурлинское, ул Партизанская, д 98', 'data': {'postal_code': '658747', 'is_closed': False, 'type_code': 'СОПС', 'address_str': 'Алтайский край, Крутихинский р-н, с Волчно-Бурлинское, ул Партизанская, д 98', 'address_kladr_id': '2202300000600', 'address_qc': '0', 'geo_lat': 54.053755, 'geo_lon': 80.768417, 'schedule_mon': '09:00-17:00, обед 13:00-14:00', 'schedule_tue': None, 'schedule_wed': '09:00-17:00, обед 13:00-14:00', 'schedule_thu': '09:00-17:00, обед 13:00-14:00', 'schedule_fri': '09:00-17:00, обед 13:00-14:00', 'schedule_sat': '09:00-16:00, обед 13:00-14:00', 'schedule_sun': None}}]
我运行了以下代码(list_1为获取到的响应数组):
for index, element in enumerate(list_1): d = dadata.suggest("postal_unit", element) for feature in d['data']: coor = feature['geo_lon'] print(coor)
但触发了错误:
for feature in d['data']: TypeError: list indices must be integers or slices, not str
错误原因
报错说明d本身是列表类型,不是字典,所以不能用d['data']这种字符串索引访问元素,必须用整数索引(比如d[0])或切片。结合你提供的示例数组来看,dadata.suggest()返回的是列表,而非包含data键的字典。
解决方案
方案1:遍历返回列表中的所有项
如果dadata.suggest()可能返回多个结果,用循环遍历列表中的每个元素,再提取内部的data字段:
for index, element in enumerate(list_1): d = dadata.suggest("postal_unit", element) # 遍历列表中的每个返回项 for item in d: # 从item中取出data字典 location_data = item['data'] lon = location_data['geo_lon'] lat = location_data['geo_lat'] print(f"经度: {lon}, 纬度: {lat}")
方案2:直接访问列表中的单个元素
如果dadata.suggest()每次只返回一个结果,可以直接用索引[0]访问,同时增加非空判断避免索引错误:
for index, element in enumerate(list_1): d = dadata.suggest("postal_unit", element) if d: # 先确认列表不为空 location_data = d[0]['data'] lon = location_data['geo_lon'] lat = location_data['geo_lat'] print(f"经度: {lon}, 纬度: {lat}")
排查小技巧
作为Python新手,遇到结构不明确的返回值时,可以先打印类型和内容,快速理清数据结构:
for index, element in enumerate(list_1): d = dadata.suggest("postal_unit", element) print(type(d)) # 打印d的类型,确认是列表还是字典 print(d) # 打印d的具体内容,看清内部结构
内容的提问来源于stack exchange,提问作者odo sd
相关产品推荐
相关产品推荐

