2017-09-26 84 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)]