[Tutor] MapReduce

Steve Nelson sanelson at gmail.com
Mon Feb 5 23:22:04 CET 2007


On 2/5/07, Steve Nelson <sanelson at gmail.com> wrote:
> What I want to do is now "group" these urls so that repeated urls have
> as their "partner" a lsit of indexes.  To take a test example of the
> method I have in mind:
>
> def testGrouper(self):
>     """Group occurences of a record together"""
>     test_list = [('fred', 1), ('jim', 2), ('bill', 3), ('jim', 4)]
>     grouped_list = [('fred', 1), ('jim', [2, 4]), ('bill' ,3)]
>     self.assertEqual(myGroup(test_list), grouped_list)

<snip>

> I would like a clearer, more attractive way of
> making the test pass.  If this can be done in functional style, even
> better.

I now have:

def myGroup(stuff):
  return [(key, map(lambda item: item[1], list(group))) for key, group
in groupby(sorted(stuff), lambda item: item[0] )]

Not sure I fully understand how groupby objects work, nor what a
sub-iterator is, though.  But I more or less understand it.

I understand I could use itemgetter() instead of the lambda...

Can anyone clarify?

S.


More information about the Tutor mailing list