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]}
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]}
转置数组,将键与结果使用zip()
结合,并转换为dict
:
dict(zip(keys, zip(*array)))
由于array
是NumPy数组,因此您还可以使用
dict(zip(keys, array.T)))
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)]