Получение значения из JSON с помощью Python - PullRequest
1 голос
/ 01 ноября 2019

У меня следующий текст в формате json:

    "data": [
        {
            "Id": "abc",
            "Indexes": {
                "Status": 0,
            }
        },
        {
            "Id": "bcd",
            "Indexes": {
                "Status": 1,
            }
        }

]

Я пытаюсь получить идентификатор, где статус = 0. Я могу получить это с помощью цикла for, как:

 for id in test['data']:
        if data['Indexes']['Status'] == 0:
            id = id["Id"]

Но есть лилучший способ сделать это одним вкладышем?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Вы можете использовать понимание списка более чем test['data']:

results = [id['Id'] for id in test['data'] if id['Indexes']['Status'] == 0]

# results contains every such id

И если вы хотите, чтобы в списке идентификаторов было только последнее совпадение, например, как кажется в вашем коде, отмените test['data'] иполучить next от итератора, сделанного из этого:

last_result = next(id['Id'] for id in reversed(test['data']) if id['Indexes']['Status'] == 0)

# last_result is the last matching id
0 голосов
/ 01 ноября 2019

У вас есть проблемы с используемыми переменными в вашем коде. Это должно работать:

for data in test['data']:
    if data['Indexes']['Status'] == 0:
        # do something with data["Id"]

Если вы хотите получить только первый такой предмет:

this_id = next(data["Id"] for data in test["data"] if data["Indexes"]["Status"] == 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...