有:
keys = ['a', 'b','c','d']
numpy array ....
array = numpy.array([[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13, 15]])
想要
my_dict = {'a': [1,6,11], 'b': [2,7,12], 'c': [3,7,13], 'd': [5,10,15]}
答案 0 :(得分:17)
将数组转换为zip()
,并将结果转换为dict
:
dict(zip(keys, zip(*array)))
由于array
是NumPy数组,因此您也可以使用
dict(zip(keys, array.T)))
答案 1 :(得分:6)
keys = ['a', 'b','c','d']
vals = [[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13, 15]]
dict(zip(keys, zip(*vals)))
{'a': (1, 6, 11), 'c': (3, 8, 13), 'b': (2, 7, 12), 'd': (5, 10, 15)}
当你zip(*)
一个物体时,看看发生了什么是很有用的,这是一个非常有用的技巧:
zip(*vals)
[(1, 6, 11), (2, 7, 12), (3, 8, 13), (5, 10, 15)]
看起来(并且你会看到另一个答案)就像转置一样!这里有个问题。如果其中一个列表比其他列表短,zip(*)
将过早停止:
vals = [[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13]]
zip(*vals)
[(1, 6, 11), (2, 7, 12), (3, 8, 13)]