在管道中使用带有初始值的reduce和toolz-Python

在管道中使用带有初始值的reduce和toolz-Python,python,pipe,reduce,toolz,Python,Pipe,Reduce,Toolz,我希望执行reduce操作,作为管道的一部分,根据键对dict项进行排序。 e、 g 我用一个lambda,即 res = pipe(items, lambda x: reduce(combine_items, x, {}), other_ops...) 我的问题是,是否有其他方法可以做到这一点,而不必在管道中使用lambda 我遇到的主要问题是,我需要为我的列表附加设置一个默认值,以便在reduce中正常工作,我不确定是否有其他方法可以在管道中正确填充该值。您可以使用“从toolz”来滚动自

我希望执行reduce操作,作为管道的一部分,根据键对dict项进行排序。 e、 g

我用一个lambda,即

res = pipe(items, lambda x: reduce(combine_items, x, {}), other_ops...)
我的问题是,是否有其他方法可以做到这一点,而不必在管道中使用lambda


我遇到的主要问题是,我需要为我的列表附加设置一个默认值,以便在reduce中正常工作,我不确定是否有其他方法可以在管道中正确填充该值。

您可以使用“从toolz”来滚动自己的组合项,而不是滚动您自己的组合项,它正是您在这里尝试执行的操作:

from toolz import groupby

res = groupby('id', items)
如果要将其用作管道的一部分,则可以使用来通过键参数传递groupby:

from toolz import groupby, pipe
from functools import partial

res = pipe(items, partial(groupby, 'id'), other_ops...)

我会更进一步-从toolz导入curried toolz函数。curried import groupby,pipe,然后您可以只编写res=pipeitems,groupby'id',其他操作。。。
from toolz import groupby, pipe
from functools import partial

res = pipe(items, partial(groupby, 'id'), other_ops...)