Доступ к ключу многоуровневого файла JSON в python - PullRequest
0 голосов
/ 30 мая 2018

У меня есть файл json, который выглядит следующим образом:

{
    "ancestors": [
        {
            "subcategory": [
                {
                    "key": "city",
                    "name": "City"
                }
            ],
            "name": "Da Lat"
        },
        {
            "subcategory": [
                {
                    "key": "province",
                    "name": "Province"
                }
            ],
            "name": "Lam Dong Province"
        },
        {
            "subcategory": [
                {
                    "key": "country",
                    "name": "Country"
                }
            ],
            "name": "Vietnam"
        }
    ],
}

Проблема в том, что мне нужно получить доступ к имени той подкатегории, ключ которой - провинция.

Здесь я хочу получить доступ к "Провинции Лам Донг"

Я не могу понять, как подняться на один уровень и проверить условия.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Вы можете использовать next с пониманием генератора.

res = next(i['name'] for i in json_dict['ancestors'] if
           i['subcategory'][0]['key'] == 'province')

# 'Lam Dong Province'

Чтобы построить условие i['subcategory'][0]['key'], вам нужно только отметить:

  1. Списки обозначены [] и единственный элемент списка может быть получен с помощью [0].
  2. Словари обозначены {}, а значения могут быть получены с помощью [key].
0 голосов
/ 30 мая 2018

Переберите его, проверьте состояние, которое вы хотите.Если условие истинно, верните желаемое значение.

def search_subcategories(json_dict):
    for element in json_dict['ancestors']:
        if element['subcategory'][0]['key'] == 'province':
             return element['name']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...