python - 二维列表计算

标签 python list python-3.x multidimensional-array mapping

我有两个二维列表。每个 list 项目都包含一个带有字符串 ID 和整数的 list。我想在字符串 ID 匹配的地方相互减去整数。

列表 1:

list1 = [['ID_001',1000],['ID_002',2000],['ID_003',3000]]

list 2:

list2 = [['ID_001',500],['ID_003',1000],['ID_002',1000]]

我想结束

difference = [['ID_001',500],['ID_002',1000],['ID_003',2000]]

请注意,元素在两个列表中的顺序不一定相同。两个列表的长度相同,并且两个列表中的每个 ID 对应一个整数。

我也希望这能高效地完成,因为两个列表都有数千条记录。

最佳答案

from collections import defaultdict

diffs = defaultdict(int)
list1 = [['ID_001',1000],['ID_002',2000],['ID_003',3000]]
list2 = [['ID_001',500],['ID_003',1000],['ID_002',1000]]
for pair in list1:
    diffs[pair[0]] = pair[1]
for pair in list2:
    diffs[pair[0]] -= pair[1]

differences = [[k,abs(v)] for k,v in diffs.items()]
print(differences)

我很好奇,所以跑了几次,将我的答案与吉姆的答案进行了比较。它们似乎几乎同时运行。但是,如果您愿意接受字典形式的输出,则可以将我的运行时间减半。

当然,如果这对您很重要的话,他的代码更像 Pythonic。

关于python - 二维列表计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38722301/

相关文章:

python - 将奇数/偶数映射到嵌套列表

python - 删除python中过多的列表

python - QPushButton,禁用所有其他按钮,除非再次按下

python - 在 Tensorflow 1.9 的一个脚本中运行不同的模型

python - 分配选项以在显示时选择下拉列表

python - 在 Python 中 Hook 每个函数调用

python - 如何在循环结束时触发某些内容?

list - Haskell 中的这个列表排列实现究竟做了什么?

python - IDLE Debugger 无法处理输入()

python - Raspberry Pi python显示内存中的图像