2012-03-20 80 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)]