Как создать Dict из массива в Python - PullRequest
4 голосов
/ 20 марта 2012

Иметь:

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

Ответы [ 2 ]

17 голосов
/ 20 марта 2012

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

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

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

dict(zip(keys, array.T)))
6 голосов
/ 20 марта 2012
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)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...