我想从长度不等的三个不同列表中创建一个嵌套词典。
这些是列表。
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
实际上我的list eventresults结果是DataFrames的列表,而不是带有整数的列表。
有人可以给我帮助吗?
答案 0 :(得分:1)
可以通过在wedstrijden
上用zip
对eventresults
进行iterator来轻松解决:
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]}}