组合嵌套列表的第一个元素并汇总第二个元素

时间:2013-10-15 10:36:23

标签: python

我有一个这样的清单:

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

如何将元组与相同的第一项组合在一起,以便结果如下:

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

有没有一些复杂的方法呢?元组的顺序无关紧要。

由于

2 个答案:

答案 0 :(得分: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。它将覆盖内置类型。

答案 1 :(得分: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]]