Как выбрать свойство элементов в массиве? python
У меня есть много одинаковых массивов, из которых мне нужно выбрать properties только у "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
Так же пробовал этот код:
for index, element in enumerate(list_1):
data = element["data"]
geo_lat = data["geo_lat"]
geo_lon = data["geo_lon"]
print(str(geo_lat))
print(str(geo_lon))
И снова ошибка:
data = element["data"]
TypeError: 'int' object is not subscriptable
Буду благодарен за помощь.
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
На тестовых данных ваш код № 2 отрабатывает нормально. Скорее всего, какие-то элементы имеют неправильную структуру. Попробуйте обработать ошибку и выявить такие элементы.
v = [{'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}},
{'value': '658747',
'unrestricted_value': 'Алтайский край, Крутихинский р-н, с Волчно-Бурлинское, ул Партизанская, д 98',
'data': 1}
]
for index, element in enumerate(v):
try:
data = element["data"]
geo_lat = data["geo_lat"]
geo_lon = data["geo_lon"]
print(f'{index}) geo_lat: {geo_lat}, geo_lon: {geo_lon}')
except:
print(f'Ошибочный элемент № {index}: {element}')
0) geo_lat: 54.053755, geo_lon: 80.768417
Ошибочный элемент № 1: {'value': '658747', 'unrestricted_value': 'Алтайский край, Крутихинский р-н, с Волчно-Бурлинское, ул Партизанская, д 98', 'data': 1}