Неожиданный вывод при переборе списка словарей - Python & Microsoft Graph API - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь перебрать список словарей из файла JSON, который был извлечен из Microsoft Graph.Код, который я использую, может хранить списки в переменной, но вместо получения ожидаемых 9 элементов я получаю 27.

Мой код:

for i in range(len(json_data_list)):
    try:
        for key in json_data_list[i]:
            headers.append(json_data_list[i]['internetMessageHeaders'])
    except KeyError:
        continue
    i += 1

Вотпример данных JSON:

{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('48d31887-5fad-4d73-a9f5-3c356e68a038')/messages(internetMessageHeaders)",
"@odata.nextLink": "https://graph.microsoft.com/beta/me/messages?$select=internetMessageHeaders&$skip=12",
"value": [
    {
        "@odata.etag": "W/\"CQAAABYAAAAiIsqMbYjsT5e/T7KzowPTAAEMTBu8\"",
        "id": "AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAEMAAAiIsqMbYjsT5e-T7KzowPTAAEMOXaXAAA="
    },
    {
        "@odata.etag": "W/\"CQAAABYAAAAiIsqMbYjsT5e/T7KzowPTAAEMTBuN\"",
        "id": "AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAEMAAAiIsqMbYjsT5e-T7KzowPTAAEMOXaWAAA=",
        "internetMessageHeaders": [
            {
                "name": "Received",
                "value": "from DM6PR15MB2425.namprd15.prod.outlook.com (2603:10b6:102:2::22) by BYAPR15MB2423.namprd15.prod.outlook.com with HTTPS via CO2PR05CA0054.NAMPRD05.PROD.OUTLOOK.COM; Mon, 10 Sep 2018 21:52:40 +0000"
            },
            {
                "name": "Received",
                "value": "from CO1PR15CA0057.namprd15.prod.outlook.com (2603:10b6:101:1f::25) by DM6PR15MB2425.namprd15.prod.outlook.com (2603:10b6:5:8e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.19; Mon, 10 Sep 2018 21:52:38 +0000"
            },

1 Ответ

0 голосов
/ 05 марта 2019

Понял, что мне не нужен второй цикл for.

Это сработало, как и ожидалось:

for i in range(len(jsonDataList)):
    try:
        headers.append(jsonDataList[i]['internetMessageHeaders'])
    except KeyError:
        continue
    i += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...