我有两个二维列表。每个 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/