关于python:将两个列表合并在一起

Merge two lists together

我在python中有两个列表:

1
2
L1=[[100, 1], [101, 2]]
L2=[[100, 3], [101, 4], [102, 5]]

我想合并它们,这样我得到:

1
L_merge=[[100, 4], [101, 6], [102, 5]]

重要的是,这两个列表的大小可能不同。

我试着用字典,但没能搞清楚。我很乐意使用numpy、pandas或任何其他工具来实现合并。


您可以在这两个列表中使用collections.Counter,并简单地对它们求和:

1
2
3
4
5
6
7
8
from collections import Counter

L1 = [[100, 1], [101, 2]]
L2 = [[100, 3], [101, 4], [102, 5]]

L_merge = (Counter(dict(L1)) + Counter(dict(L2))).items()
print(list(L_merge))
# [(100, 4), (101, 6), (102, 5)]


1
2
3
4
5
6
7
8
9
L1=[[100, 1], [101, 2]]
L2=[[100, 3], [101, 4], [102, 5]]

d = {}
for a,b in L1+L2:
  d[a] = d.get(a,0) + b
L_merge = [[k,v] for k,v in d.items()]

print(L_merge)


为什么不使用for循环:

1
2
3
L_merge = L2
for i in len(L1):
    L_merge[i][-1] += L1[i][-1]

一个警告是,只有当l2是2个列表中较长的列表时,这才有效。