2017-09-26 86 views
1

我想多个列表合并成一个列表元组相同的密钥值结合起来,同是相同的元组密钥必须与值加在一起。如何当组合列表

例如:

A = [ (1,2),(5,2) ] 
B = [ (1,2),(5,5),(11,2) ] 

预期结果:

result = [ (1,4),(5,7),(11,2) ] 

回答

3

一旦你意识到保持第一要素的轨道的想法与dict

做得好你可以做到这一点很简单
c = dict(A) 
for key, value in B: 
    c[key] = c.get(key, 0) + value 

result = list(c.items()) 
1

如果顺序并不重要,使用collections.Counter是另一种选择:

In [21]: from collections import Counter 

In [22]: A = [ (1,2),(5,2) ] 

In [23]: B = [ (1,2),(5,5),(11,2) ] 

In [24]: (Counter(dict(A)) + Counter(dict(B))).items() # list(...) for Python 3 
Out[24]: [(1, 4), (11, 2), (5, 7)]