如何在Python中从数组创建字典

16

Have:

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个回答

36

转置数组,将键与结果使用zip()结合,并转换为dict

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

由于array是NumPy数组,因此您还可以使用

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

很好。这也可能是Python 2.7+上的字典推导式。 - Niklas B.

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接