Python中的函数是否与Spark(PySpark)中的reduceByKey
完全相同:
a.reduceByKey(lambda a,b:a+b)
例如:
a = [(1, ['a']),
(1, ['b']),
(2, ['c']),
(2, ['d']),
(3, ['e'])]
到
b = [(1,['a','b']),
(2,['c','d']),
(3,['e']),
答案 0 :(得分:0)
我不知道。但是你自己写一个很容易。
from collections import OrderedDict
def reduce_by_key(ls):
d = OrderedDict()
for key, sublist in ls:
d.setdefault(key, []).extend(sublist)
return list(d.items())
如果不需要保留订单,则可以使用常规dict
。
答案 1 :(得分:0)
没有。可能最接近的是toolz.itertoolz.reduceby
,尽管它具有不同的语义(以流式方式应用,因此它不假设相关性或可交换性)。它还减少了完整的对象并返回字典:
list(reduceby(first, lambda x, y: (first(x), second(x) + second(y)), a).values())
## [(1, ['a', 'b']), (2, ['c', 'd']), (3, ['e'])]