2013-10-15 182 views
1

我有一個這樣的名單:結合嵌套列表的第一要素,總結第二元素

list = [["r", 200], ["c,", 0.22], ["r", 5000]] 

我如何結合的元組具有相同的第一個項目,這樣的結果是這樣的:

list = [["r", 5200], ["c", 0.22]] 

有沒有一些複雜的方式來做到這一點?元組的順序無關緊要。

感謝

+1

你的方式,而不是一個元組列表具有列表存在列表:) – TerryA

回答

0

隨着使用的內置函數:

lst = [["r", 200], ["c,", 0.22], ["r", 5000]] 
res={} 
for k,v in lst: 
    res[k]=res.get(k, 0) + v 
res 
# {'r': 5200, 'c,': 0.22} 

要得到的結果在原始類型:

[[k, v] for k,v in res.iteritems()] 
# [['r', 5200], ['c,', 0.22]] 
1

您可以使用collections.defaultdict

>>> from collections import defaultdict 
>>> t = [["r", 200], ["c,", 0.22], ["r", 5000]] 
>>> d = defaultdict(int) 
>>> for i, j in t: 
...  d[i] += j 
... 
>>> print d.items() 
[('r', 5200), ('c,', 0.22)] 

順便說一句,不命名列表list。它將覆蓋內置類型。

相關問題