[Python-ideas] list.sort with a int or str key

Terry Reedy tjreedy at udel.edu
Fri Sep 17 05:11:22 CEST 2010

On 9/16/2010 2:28 PM, Raymond Hettinger wrote:

> The key= parameter is a protocol that is used across multiple tools min(). max(), groupby(), nmallest(), nlargest(), etc.  All of those would need to change to stay in-sync.

> ISTM, the performance would be about the same as you already get from attrgetter(), itemgetter(), and methodcaller().  Also, those three tools are already more flexible than the proposal, for example:
>  attrgetter('lastname', 'firstname')  # key = lambda r: (r.lastname, r.firstname)
>  itemgetter(0, 7)                     # key = lambda r: (r[0], r[7])
>  methodcaller('get_stats', 'size')    # key = lambda r: r.get_stats('size')

It is easy to not know about these. I think the doc set could usefully 
use an expanded entry on *key functions* (that would be a 
cross-reference link) that includes examples like the above. Currently, 
for example, the min entry has "The optional keyword-only key argument 
specifies a one-argument ordering function like that used for 
list.sort()." but there is no link and going to list.sort only adds 
"that is used to extract a comparison key from each list element: 
key=str.lower. The default value is None." Perhaps we could expand that 
and make the existing cross-references into links.

Terry Jan Reedy

More information about the Python-ideas mailing list