[Python-Dev] operator.itemgetter with a callback method

Alexandre Fiori fiorix at gmail.com
Sun Jan 11 17:21:26 CET 2009


thanks!

On Sun, Jan 11, 2009 at 2:12 PM, Guilherme Polo <ggpolo at gmail.com> wrote:

> On Sun, Jan 11, 2009 at 2:02 PM, Alexandre Fiori <fiorix at gmail.com> wrote:
> >
> > hello
> >
> > i was thinking about a possible improvement for the itemgetter
> > the documentation page shows simple examples like sorting a dictionary by
> > its integer values
>
> Hi,
>
> Sorry for starting like this but ideas are supposed to be emailed to
> the python-ideas maillist.
>
> > .
> > .
> >
> > in order for that sort (and possibly a lot of other things) to work
> > properly, we could add
> > a callback method for itemgetter, like this:
> >
> > class itemgetter:
> >     def __init__(self, index, callback=None):
> >         self.index = index
> >         self.callback = callback
> >
> >     def __call__(self, item):
> >         return self.callback and self.callback(item[self.index]) or
> > item[self.index]
> >
> > so, we could easly sort by the amount of data in each list, like this:
> >
> >>>> sorted(friends.items(), key=itemgetter(1, callback=len))
> > [('john', ['max']), ('alex', ['bob', 'jane']), ('foo', ['bar', 'steve',
> > 'linda'])]
> >
> >
> > what do you guys think about it? please correct me if i'm wrong.
> >
> >
>
> You are not forced to use itemgetter as a key in sorted, you can
> provide your own key method, like this:
>
> def x(item):
>    return len(item[1])
>
> sorted(friends.items(), key=x)
>
> Also, your idea ruins the name "itemgetter" since it is no longer a
> itemgetter.
>
> --
> -- Guilherme H. Polo Goncalves
>



-- 
Ship ahoy! Hast seen the While Whale?
 - Melville's Captain Ahab
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20090111/de746119/attachment.htm>


More information about the Python-Dev mailing list