我在python中有两个列表:
L1=[[100, 1], [101, 2]]
L2=[[100, 3], [101, 4], [102, 5]]
我想合并它们,所以我得到了:
L_merge=[[100, 4], [101, 6], [102, 5]]
两个列表的大小可能不同,这一点非常重要。
我试图使用字典但无法弄明白。我很高兴使用numpy,pandas或任何其他工具来获得合并。
答案 0 :(得分:5)
您可以在两个列表中使用collections.Counter
,只需汇总:
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 :(得分:0)
为什么不使用for循环:
L_merge = L2
for i in len(L1):
L_merge[i][-1] += L1[i][-1]
唯一需要注意的是,只有当L2是2个列表中较长的
时,这才有效答案 2 :(得分:0)
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)