Simple map/reduce utility function for data analysis

Steven D'Aprano steve+comp.lang.python at pearwood.info
Tue Apr 26 04:52:17 CEST 2011


On Mon, 25 Apr 2011 16:48:42 -0700, Raymond Hettinger wrote:

> Here's a handy utility function for you guys to play with:
> 
>     http://code.activestate.com/recipes/577676/

Nice. 

That's similar to itertools.groupby except that it consolidates all the 
equal key results into one list, instead of in consecutive runs.

Also groupby returns iterators instead of lists, which makes it a PITA to 
work with. map_reduce is much more straightforward to use.

Example given in the code:

>>> map_reduce(range(30), even_odd)
{0: [10, 12, 14, 16, 18, 20], 1: [11, 13, 15, 17, 19]}

>>> [(key[0], list(group)) for key,group in groupby(range(30), even_odd) 
if key is not None]
[(0, [10]), (1, [11]), (0, [12]), (1, [13]), (0, [14]), (1, [15]), (0, 
[16]), (1, [17]), (0, [18]), (1, [19]), (0, [20])]


So... when can we expect map_reduce in the functools module? :)



-- 
Steven



More information about the Python-list mailing list