sorting on keys in a list of dicts

Scott David Daniels Scott.Daniels at Acm.Org
Fri Jan 7 12:39:02 EST 2005


Jeff Shannon wrote:
> Jp Calderone wrote:
>>     L2 = [(d[key], i, d) for (i, d) in enumerate(L)]
>>     L2.sort()
>>     L = [d for (v, i, d) in L2]
> Out of curiosity, any reason that you're including the index?

Others have already remarked that this preserves sort stability
(which is, in fact a lovely property).  There is another property
which hasn't been mentioned:
     As written, only the key and the index are compared.

Try sorting:
     tricky = [dict(a=5j, b=1), dict(a=4j, b=1)]
or:
     similar = [(5j, 1), (4j, 1)]

without the index.

--Scott David Daniels
Scott.Daniels at Acm.Org






More information about the Python-list mailing list