обернуть вложенный словарь значениями вложенного списка - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть вложенный словарь Python, который я пытаюсь обернуть каждый уровень словаря в списке.Причина в том, что этот словарь преобразуется в объект Java Script, и я пытаюсь сохранить порядок словаря.Я привел пример того, что я пытался сделать.Любая помощь в этом очень ценится.

Ввод:

myDict = {
   'outerkey1': {'innerkey1': 1,
                 'innerkey2': 2,
                 'innerkey3': 3,
                 'innerkey4': 4,
                 'innerkey5': 5,
                 'innerkey6': 6,
                 'innerkey7': 7,
                 'innerkey8': 8,
                 'innerkey9': 9,
                 'innerkey10': 10,
                 'innerkey11': 11},
   'outerkey2': {'innerkey1': 100,
                 'innerkey2': 200,
                 'innerkey3': 300,
                 'innerkey4': 400,
                 'innerkey5': 500,
                 'innerkey6': 600,
                 'innerkey7': 700,
                 'innerkey8': 800,
                 'innerkey9': 900,
                 'innerkey10': 1000,
                 'innerkey11': 1100}
}

Попытка:

# my thought to change nested dict to nested list
dictToList = [[k, v] for k, v in myDict.items()]

# return result is only changing the outer part 
# of the dict to list but not the inner part
#
[['outerkey1', {'innerkey11': 11, 'innerkey8': 8, 'innerkey4': 4, 'innerkey1': 1, 'innerkey6': 6, 'innerkey7': 7, 'innerkey2': 2, 'innerkey9': 9, 'innerkey5': 5, 'innerkey3': 3, 'innerkey10': 10}], ['outerkey2', {'innerkey11': 1100, 'innerkey8': 800, 'innerkey4': 400, 'innerkey1': 100, 'innerkey6': 600, 'innerkey7': 700, 'innerkey2': 200, 'innerkey9': 900, 'innerkey5': 500, 'innerkey3': 300, 'innerkey10': 1000}]]

Пример схемы, которую я пытаюсь достичь.

myDict = [
    [{'outerkey2': [
                    {'innerkey1': 100,
                     'innerkey10': 1000,
                     'innerkey11': 1100,
                     'innerkey2': 200,
                     'innerkey3': 300,
                     'innerkey4': 400,
                     'innerkey5': 500,
                     'innerkey6': 600,
                     'innerkey7': 700,
                     'innerkey8': 800,
                     'innerkey9': 900}
                ]
    }],
    [{'outerkey1': [
                    {'innerkey1': 1,
                     'innerkey10': 10,
                     'innerkey11': 11,
                     'innerkey2': 2,
                     'innerkey3': 3,
                     'innerkey4': 4,
                     'innerkey5': 5,
                     'innerkey6': 6,
                     'innerkey7': 7,
                     'innerkey8': 8,
                     'innerkey9': 9}
                ]
    }]
]

1 Ответ

0 голосов
/ 24 декабря 2018

Исходя из желаемого результата, вы можете сделать что-то вроде этого:

myDict = [[{k : [myDict[k]]}] for k in myDict.keys()]

Это даст вам:

[[{'outerkey2': [{'innerkey11': 1100, 'innerkey3': 300, 'innerkey2': 200, 'innerkey6': 600, 'innerkey10': 1000, 'innerkey8': 800, 'innerkey4': 400, 'innerkey5': 500, 'innerkey1': 100, 'innerkey9': 900, 'innerkey7': 700}]}], [{'outerkey1': [{'innerkey11': 11, 'innerkey3': 3, 'innerkey2': 2, 'innerkey6': 6, 'innerkey10': 10, 'innerkey8': 8, 'innerkey4': 4, 'innerkey5': 5, 'innerkey1': 1, 'innerkey9': 9, 'innerkey7': 7}]}]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...