Python: Как правильно отобразить json результаты? - PullRequest
0 голосов
/ 28 февраля 2020

В настоящее время я создаю бот Telegram Bot и получаю ответ JSON через API Google Адресов, чтобы возвращать соседние местоположения пользователям. json Ответ, который я получаю, выглядит следующим образом:


results" : [
      {
         "name" : "Golden Village Tiong Bahru",
         "opening_hours" : {
            "open_now" : true
         },
         "rating" : 4.2,
         "types" : [ "movie_theater", "point_of_interest", "establishment" ],
         "user_ratings_total" : 773
      },
      {
         "name" : "Cathay Cineplex Cineleisure Orchard",
         "opening_hours" : {
            "open_now" : true
         },
         "rating" : 4.2,
         "types" : [ "movie_theater", "point_of_interest", "establishment" ],
         "user_ratings_total" : 574
      }
]


Мой текущий код для получения указанных c элементов в словаре

json.dumps([[s['name'], s['rating']] for s in object_json['results']], indent=3)

Текущие результаты:

[
   [
      "Golden Village Tiong Bahru",
      4.2
   ],
   [
      "Cathay Cineplex Cineleisure Orchard",
      4.2
   ]
]

Я бы хотел получить имя, рейтинг и отображать их рядом:

Golden Village Tiong Bahru : 4.2, 
Cathay Cineplex Cineleisure Orchard : 4.2

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2020

Хотите формат json в результате? Затем вы можете сделать:

json.dumps({
    s['name']: s['rating']
    for s in object_json['results']
}, indent=3)

Если вы хотите просто список строк:

lines = [f"{s['name']}: {s['rating']}" for s in object_json['results']]

Или вы хотите печатать только:

for s in object_json['results']:
    print(f"{s['name']}: {s['rating']}")

Вам нужно 3,6 или старший интерпретатор python для использования f-строки (f"...").
Если нет, замените f"{s['name']}: {s['rating']}" -> '{name}: {rating}'.format(**s)

0 голосов
/ 28 февраля 2020

Может быть с:

json.dumps([s['name'] + ": " + str(s['rating']) for s in object_json['results']], indent=3)
...