Skip to main content
 首页 » 编程设计

python内置reducebykey

2025年05月04日15lvdongjie

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](这将在第一次遇到元素时发生)。