2012-03-20 103 views
4

创建词典有:如何从阵列中的蟒蛇

keys = ['a', 'b','c','d'] 

numpy的阵列....

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

回答

14

移调阵列,zip()与键结果并转换为dict

dict(zip(keys, zip(*array))) 

由于array是NumPy的阵列,也可以使用

dict(zip(keys, array.T))) 
+0

漂亮。也可能是Python 2.7+的词典理解 – 2012-03-20 19:33:57

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