Как просмотреть список вложенных словарей и вывести пары k: v в словарь 1-го уровня? Данные JSON - PullRequest
1 голос
/ 09 апреля 2019

Я работаю со списком вложенных словарей JSON и пытаюсь извлечь строки из вложенных словарей 2-го уровня и сделать их парами k: v 1-го уровня.Пример исходных данных:

data = [{"account #":"54566549", "balance":{"dollars":"684", "euros":"654"}}
        {"account #":"13251462", "balance":{"dollars":"123", "euros":"111"}}
        {"account #":"99871111", "balance":{"dollars":"155", "euros":"422"}}]

То, что я пытаюсь сделать, это вытащить вложенные словари «баланс» так, чтобы был просто список словарей с тремя парами k: v для счета №, долларов,и евро, как это:

[{"account #":"54566549", "dollars":"684", "euros":"654"}
 {"account #":"13251462", "dollars":"123", "euros":"111"}
 {"account #":"99871111", "dollars":"155", "euros":"422"}]

Это работает по одному за раз так:

data[0]['dollars'] = data[0]['balance']['dollars']

Но выполнение этого в цикле приводит к ошибке "индексы списка должны быть целыми числами или слайсами, а не dict ":

for k in data:
    data[k]['dollars'] = data[k]['balance']['dollars']

Кажется, проблема в том, что я ссылаюсь на dict ('баланс') в цикле, что недопустимо, но как еще можно ссылаться на это строковое значение для вложенноговведите «доллары» и запишите его в новый ключ «доллары», который является частью словаря 1-го уровня?

Также после того, как это сделано для долларов + евро, можно ли безопасно удалить исходные словари «баланса»как хорошо?

1 Ответ

1 голос
/ 09 апреля 2019

Вы можете выполнить итерацию по data и обновить каждый диктовку с помощью поддикта в ключе balance после нажатия клавиши:

for d in data:
    d.update(d.pop('balance'))

data становится:

[{'account #': '54566549', 'dollars': '684', 'euros': '654'},
 {'account #': '13251462', 'dollars': '123', 'euros': '111'},
 {'account #': '99871111', 'dollars': '155', 'euros': '422'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...