python 有内置的reducebykey 功能吗?如果没有,我该如何模仿这个功能?
例如,如果我正在做一个简单的字数统计:
>>> x=[('a', 1), ('a', 1), ('b', 1), ('c', 1)]
>>> reduce(lambda a,b:a+b, x)
('a', 1, 'a', 1, 'b', 1, 'c', 1)
我想要的是让它返回 [('a',2), ('b',1), ('c',1)]。但是 reduce() 函数最终只是将所有元组一起迭代,并没有真正组合键。有什么办法解决这个问题吗?
请您参考如下方法:
您可以使用 OrderedDict。它还会保留顺序。
from collections import OrderedDict
result = OrderedDict()
for item in x:
result[item[0]] = result.get(item[0], 0) + item[1]
result
[('a', 2), ('b', 1), ('c', 1)]
在这里,我们正在遍历字典。我们在 result ordereddict 中查找键 item[0]。如果找到,那么我们将 item[1] 添加到已经存在的值中,在我们的例子中是 1。否则,我们将默认值设为 0,然后添加 item[1](这将在第一次遇到元素时发生)。
