При анализе API Карт Google получается Python - PullRequest
1 голос
/ 27 апреля 2020

Я написал скрипт для анализа результатов из 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, отдельно или в одну строку.

...