Python:从字典到数组的转换

Com*_*ner 4 python arrays

我有一个 Python 字典(比如D),其中每个键对应于一些预定义的列表。我想创建一个具有两列的数组,其中第一列对应于字典 D 的键,第二列对应于相应列表中元素的总和。举个例子,如果,

D = {1: [5,55], 2: [25,512], 3: [2, 18]}
Run Code Online (Sandbox Code Playgroud)

然后,我希望创建的数组应该是,

A = array( [[1,60], [2,537], [3, 20]] )
Run Code Online (Sandbox Code Playgroud)

我在这里给出了一个小例子,但我想知道一种实现速度最快的方法。目前,我正在使用以下方法:

A_List = map( lambda x: [x,sum(D[x])] , D.keys() )
Run Code Online (Sandbox Code Playgroud)

我意识到我的方法的输出是列表的形式。我可以在另一个步骤中将其转换为数组,但我不知道这是否是一种快速方法(我认为使用数组会比使用列表更快)。我将非常感谢您的回答,让我知道实现这一目标的最快方法是什么。

ACh*_*ion 6

您可以使用列表理解来创建所需的输出:

>>> [(k, sum(v)) for k, v in D.items()]   # Py2 use D.iteritems()
[(1, 60), (2, 537), (3, 20)]
Run Code Online (Sandbox Code Playgroud)

在我的计算机上,它的运行速度比该版本快约 50% map(lambda:.., D)
注意:在 py3 上map仅返回一个生成器,因此您需要list(map(...))获取其所需的实时时间。