Итерация по объекту json для получения определенного значения от каждого объекта с использованием python - PullRequest
0 голосов
/ 28 мая 2020

После выполнения res_res = response я получил следующий ответ. json () Ниже приведен пример вывода с двумя объектами, а в фактическом выводе больше объектов

    {'restaurants': [{'restaurant':'R': {'has_menu_status': {'delivery': -1,
                                                       'takeaway': -1}},
                             'all_reviews_count': 8,
                             'average_cost_for_two': 350,
                             'book_again_url': '',
                             'book_form_web_view_url': '',
                             'cuisines': 'Momos, Chinese, Fast Food',
                             'name': 'Mumbai Masala'
                             'user_rating': {'aggregate_rating': '3.2',
                                             'rating_color': 'CDD614',
                                             'rating_obj': {'bg_color': {'tint': '500',
                                                                         'type': 'lime'},
                                                            'title': {'text': '3.2'}},
                                             'rating_text': 'Average',
                                             'votes': '9'}}},
                             {'restaurant':'R': {'has_menu_status': {'delivery': -1,
                                                       'takeaway': -1}},
                             'all_reviews_count': 4,
                             'average_cost_for_two': 300,
                             'book_again_url': '',
                             'book_form_web_view_url': '',
                             'cuisines': 'Fast Food',
                             'name' : 'Jumbo King',
                             'user_rating': {'aggregate_rating': '3.4',
                                             'rating_color': 'CDD614',
                                             'rating_obj': {'bg_color': {'tint': '500',
                                                                         'type': 'lime'},
                                                            'title': {'text': '3.4'}},
                                             'rating_text': 'Average',
                                             'votes': '7'}}}],
                            'results_found': 48,
                            'results_shown': 20,
                            'results_start': 0}

Я хочу извлеките только average_cost_for_two и имя из каждого объекта и сохраните их в отдельном списке. Может ли кто-нибудь помочь мне, как повторить ответ json, который я получил, и получить желаемый результат. Заранее спасибо !!!

1 Ответ

1 голос
/ 28 мая 2020

Чтобы сохранить результат в отдельном списке (я полагаю, список dicts), выполните:

import json
test = json.loads(test_json) # It is your json from response

separate_list = [{'name': rest['restaurant']['name'], 'average_cost_for_two': rest['restaurant']['average_cost_for_two']}
                 for rest in test['restaurants']]

Тогда список будет выглядеть так:

[{'name': 'Mumbai Masala', 'average_cost_for_two': 350}, {'name': 'Jumbo King', 'average_cost_for_two': 300}]

И вы можете выполнять итерацию и получать доступ к элементам следующим образом:

for element in separate_list:
    print(element['name'])
    print(element['average_cost_for_two'])
...