1
我有一個這樣的名單:結合嵌套列表的第一要素,總結第二元素
list = [["r", 200], ["c,", 0.22], ["r", 5000]]
我如何結合的元組具有相同的第一個項目,這樣的結果是這樣的:
list = [["r", 5200], ["c", 0.22]]
有沒有一些複雜的方式來做到這一點?元組的順序無關緊要。
感謝
我有一個這樣的名單:結合嵌套列表的第一要素,總結第二元素
list = [["r", 200], ["c,", 0.22], ["r", 5000]]
我如何結合的元組具有相同的第一個項目,這樣的結果是這樣的:
list = [["r", 5200], ["c", 0.22]]
有沒有一些複雜的方式來做到這一點?元組的順序無關緊要。
感謝
隨着使用的內置函數:
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]]
您可以使用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
。它將覆蓋內置類型。
你的方式,而不是一個元組列表具有列表存在列表:) – TerryA