首页 > 解决方案 > 将不等长的列表组合成字典

问题描述

您如何将一个列表与另一个长度不等的列表加入到字典中

list_header=['a','b']
list_value=[1,2,3,4,5,6,5,7,8]

结果字典:

{"iteration1":{'a':1,'b':2},"iteration2":{'a':3,'b':4}, "iteration3":{'a':5,'b':6}, "iteration4":{'a':7,'b':8} }

标签: pythonpython-3.x

解决方案


更新(基于更改的问题)

您可以使用嵌套字典理解生成所需的结果:

out = { "iteration" + str(i+1) : { list_header[j] : list_value[i*len(list_header)+j] for j in range(len(list_header)) } for i in range(len(list_value) // len(list_header)) }
print(out)

输出:

{'iteration3': {'b': 6, 'a': 5}, 'iteration2': {'b': 4, 'a': 3}, 'iteration4': {'b': 8, 'a': 7}, 'iteration1': {'b': 2, 'a': 1}}

原始答案

你不能创建这样的字典;字典键必须是唯一的。您可以创建一个元组列表:

list_header=['a','b']
list_value=[1,2,3,4,5,6,7,8]

out = [(h, v) for h, v in zip(list_header * (len(list_value) // len(list_header) + 1), list_value)]
print(out)

输出:

[('a', 1), ('b', 2), ('a', 3), ('b', 4), ('a', 5), ('b', 6), ('a', 7), ('b', 8)]

推荐阅读