如何在python中从数组创建Dict

时间:2012-03-20 19:30:18

标签: python dictionary

有:

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]}

2 个答案:

答案 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)]