我有一个 Python 字典(比如 D),其中每个键都对应于某个预定义的列表。我想创建一个包含两列的数组,其中第一列对应于字典 D 的键,第二列对应于相应列表中元素的总和 .例如,如果,
D = {1: [5,55], 2: [25,512], 3: [2, 18]}
那么,我希望创建的数组应该是,
A = array( [[1,60], [2,537], [3, 20]] )
我在这里给出了一个小例子,但我想知道实现最快的方法。目前,我正在使用以下方法:
A_List = map( lambda x: [x,sum(D[x])] , D.keys() )
我意识到我的方法的输出是一个列表的形式。我可以在另一个步骤中将其转换为数组,但我不知道这是否是一种快速方法(我认为使用数组会比使用列表更快)。如果我能知道实现此目标的最快方法是什么,我将非常感激。
最佳答案
您可以使用列表理解来创建所需的输出:
>>> [(k, sum(v)) for k, v in D.items()] # Py2 use D.iteritems()
[(1, 60), (2, 537), (3, 20)]
在我的电脑上,它比 map(lambda:.., D)
版本快 50%。
注意:在 py3 上,map
只返回一个生成器,因此您需要 list(map(...))
来获取它实际花费的时间。
关于Python:从字典到数组的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882659/