Вложенный словарь из 3 списков разной длины в Python - PullRequest
0 голосов
/ 08 октября 2018

Я хочу сделать вложенный словарь из трех разных списков, которые имеют разную длину.

Это списки.

jaren = ['2017', '2018']
wedstrijden = ['NED', 'GER', 'GBR', 'USA']
eventresults = [[1, 2, 3, 4], [1,2], [1,2,3,4,5,6], [1,2,3,4,5,6,7,8,9,10], [3,2,1], [6,5,4,3,2,1], [4,5,6,3], [1,2,3,4,5,6,7]]

Вывод должен выглядеть следующим образом:

main_dict = {'2017': {'NED':[1, 2, 3, 4], 'GER':[1,2], 'GBR':[1,2,3,4,5,6], 'USA':[1,2,3,4,5,6,7,8,9,10]},{'2018': {'NED':[3, 2, 1], 'GER':[6,5,4,3,2,1], 'GBR':[4,5,6,3], 'USA':[1,2,3,4,5,6,7]}}

Мой текущий вывод:

main_dict = {'2017': {'NED':[1, 2, 3, 4], 'GER':[1, 2, 3, 4], 'GBR':[1, 2, 3, 4], 'USA':[1, 2, 3, 4]},{'2018': {'NED':[1,2], 'GER':[1,2], 'GBR':[1,2], 'USA':[1,2]}}

И я использую этот код:

main_dict = {}
for jaar, eventresult in zip(jaren, eventresults):
    main_dict[jaar] = {}
        for wedstrijd in wedstrijden:
            main_dict[jaar][wedstrijd] = eventresult

На самом деле мой список событий - это список DataFrames вместо списков с целыми числами.

Может кто-нибудь помочь мне с кодом?

1 Ответ

0 голосов
/ 08 октября 2018

Это легко решается с помощью zip ping wedstrijden с итератором over eventresults:

event_itr = iter(eventresults)
result = {}
for year in jaren:
    result[year] = dict(zip(wedstrijden, event_itr))

# result:
# {'2017': {'NED': [1, 2, 3, 4], 'GER': [1, 2], 'GBR': [1, 2, 3, 4, 5, 6], 'USA': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]},
#  '2018': {'NED': [3, 2, 1], 'GER': [6, 5, 4, 3, 2, 1], 'GBR': [4, 5, 6, 3], 'USA': [1, 2, 3, 4, 5, 6, 7]}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...