Для L oop выполняет только первый объект в списке - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь использовать от Google Maps API до l oop для повышения рейтингов двух свойств, которые мне нужно поместить в список, но я дважды получаю результат для первого свойства. Пожалуйста, помогите мне узнать, что мне не хватает.

Вот код:

addresses = ['mall of america in bloomington', 'king of prussia mall']

for i in addresses:
    get_rating = gmaps.find_place(input=addresses, input_type = 'textquery', fields=['name', 'place_id', 'rating'])
    print(get_rating)

Вот результат:

{'candidates': [{'name': 'Mall of America®', 'place_id': 'ChIJLWE8OWwv9ocRayh4boDxxrM', 'rating': 4.6}], 'status': 'OK'}
{'candidates': [{'name': 'Mall of America®', 'place_id': 'ChIJLWE8OWwv9ocRayh4boDxxrM', 'rating': 4.6}], 'status': 'OK'}

1 Ответ

2 голосов
/ 13 июля 2020

В первом операторе вашего l oop:

get_rating = gmaps.find_place(input=addresses, input_type = 'textquery', fields=['name', 'place_id', 'rating'])

вы используете список addresses в качестве входных данных, когда я считаю, что вы хотели использовать i, элемент в списке. Исправленный код будет:

addresses = ['mall of america in bloomington', 'king of prussia mall']

for i in addresses:
    get_rating = gmaps.find_place(input=i, input_type = 'textquery', fields=['name', 'place_id', 'rating'])
    print(get_rating)

Чтобы ответить на ваш комментарий о том, как получить значения рейтингов:

Похоже, что возвращаемое значение является значением dict. В этом случае вы можете перебирать его, как и любой другой dict:

import json

addresses = ['mall of america in bloomington', 'king of prussia mall']
ratings = []

for i in addresses:
    get_rating = gmaps.find_place(input=i, input_type = 'textquery', fields=['name', 'place_id', 'rating'])
    for candidate in get_rating['candidates']:
        ratings.append(candidate['rating'])

Вам решать, как получить значения рейтингов в формате csv, и отловить любые крайние случаи, которые могут возникнуть , например:

  • Что делать, если поиск не возвращает кандидатов?
  • Что делать, если в результатах кандидата нет значения «рейтинг»?
  • Что делать, если тип возврата gmaps.find_place не dict?
...