2012-03-20 2 views

ответ

14

транспонировать массив, zip() ключи с и преобразовать в dict:

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

Поскольку array является массив NumPy, вы можете также использовать

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

Красивая. Возможно, также будет понимание диктофона на Python 2.7+ –

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)] 
Смежные вопросы