Я написал скрипт для анализа результатов из API Карт Google, чтобы получить из него c частей. В моем конкретном случае c мне нужна геолокация. Вот пример того, как структурирован ответ от Google Maps:
{'address_components': [{'long_name': '253',
'short_name': '253',
'types': ['street_number']},
{'long_name': 'Broadway', 'short_name': 'Broadway', 'types': ['route']},
{'long_name': 'Manhattan',
'short_name': 'Manhattan',
'types': ['political', 'sublocality', 'sublocality_level_1']},
{'long_name': 'New York',
'short_name': 'New York',
'types': ['locality', 'political']},
{'long_name': 'New York County',
'short_name': 'New York County',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'New York',
'short_name': 'NY',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United States',
'short_name': 'US',
'types': ['country', 'political']},
{'long_name': '10007', 'short_name': '10007', 'types': ['postal_code']}],
'formatted_address': '253 Broadway, New York, NY 10007, USA',
'geometry': {'location': {'lat': 40.7133073, 'lng': -74.0073864},
'location_type': 'ROOFTOP',
'viewport': {'northeast': {'lat': 40.71465628029149,
'lng': -74.00603741970849},
'southwest': {'lat': 40.7119583197085, 'lng': -74.00873538029151}}},
'place_id': 'ChIJ9wzTpBhawokRWLkRYU6k64E',
'plus_code': {'compound_code': 'PX7V+82 New York, United States',
'global_code': '87G7PX7V+82'},
'types': ['premise']}
А вот мой код
def get_geocode(address_data):
for item in address_data['location']:
typs = set(item['types'])
if typs == set(['premise']):
return item['location']
return None
Не могли бы вы предложить лучший способ для анализа результатов? Как я понимаю, наборы разделяют только словари внутри первого списка внутри компонентов адреса, поэтому я не совсем уверен, как анализировать все, что идет после него.
Вывод, который я хотел бы получить: 'lat': 40.7133073, 'lng': -74.0073864, отдельно или в одну строку.