我有一个这样的列表:
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]]
有没有一些复杂的方法可以做到这一点?元组的顺序无关紧要。
谢谢
您可以使用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
。它将覆盖内置类型。
使用内置函数:
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]]