Python最简单的方法来汇总列表元组列表的交集

jab*_*jab 7 python intersection list set

假设我有以下两个元组列表

myList = [(1, 7), (3, 3), (5, 9)]
otherList = [(2, 4), (3, 5), (5, 2), (7, 8)]

returns => [(1, 7), (2, 4), (3, 8), (5, 11), (7, 8)]
Run Code Online (Sandbox Code Playgroud)

我想设计,通过检查所述元组的第一个元素上的任何交叉点融合这两个列表,如果有交叉点的合并操作中,添加有问题的每个元组(合并两个)的第二元件.在操作之后,我想根据第一个元素进行排序.

我也发布了这个,因为我认为它是一个非常常见的问题,有一个明显的解决方案,但我觉得这个问题可能有非常pythonic的解决方案;)

Sve*_*ach 14

使用字典作为结果:

result = {}
for k, v in my_list + other_list:
    result[k] = result.get(k, 0) + v
Run Code Online (Sandbox Code Playgroud)

如果你想要一个元组列表,你可以通过它result.items().结果列表将按任意顺序排列,但您可以根据需要对其进行排序.

(请注意,我重命名了您的列表以符合Python的样式约定.)