Python:从字典到数组的转换

标签 python arrays

我有一个 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/

相关文章:

python - ECC图像对齐方法中的warp_mode的cv2.MOTION_EUCLIDEAN

python - CNTK中如何设置设备进行特定操作?

java - 查找数组中行的绝对值,然后打印答案中的最大值

c - 如何使用 C 中的指针查找/打印数组中最大值的索引

Python,列出有规律的差距

python - 递归地按键对嵌套的 OrderedDict 进行排序

python - 增加决策树中节点的大小

javascript - 循环遍历 3 个数组,仅当第 3 个数组中有值时才获取每个索引位置的最大值,否则返回 0

C++ 段错误

javascript - Array.prototype.includes 在 Node js 版本 <= 4