[Python-Dev] operator.itemgetter with a callback method
Guilherme Polo
ggpolo at gmail.com
Sun Jan 11 17:12:05 CET 2009
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
More information about the Python-Dev
mailing list