[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