[Tutor] sorting a list of dictionaries

Kent Johnson kent37 at tds.net
Wed Apr 13 11:52:20 CEST 2005


> -----Original Message-----
> From: sigurd at 12move.de [mailto:sigurd at 12move.de] 
> Sent: Thursday, December 09, 2004 12:19 PM
> To: tutor at python.org
> Subject: Re: [Tutor] sorting a list of dictionaries
> 
> 
> On  9 Dez 2004, ljholish at speakeasy.net wrote:
> 
> 
>>I have a list of dictionaries, each representing info about a file, 
>>something like:
>>
>>[{'name':'foo.txt','size':35}, {'name':'bar.txt','size':35}, ...]
>>
>>I want to present a sorted list of all the files' data, sorting on the 
>>keys 'name' or 'size'. The file 'name' s should be unique (I'm hoping) 
>>across all the dictionaries. Can someone point me towards an efficient 
>>solution for accomplishing the sort? (The list has 1000s of files).
> 
> 
> That's easy to achieve, since sort takes a custom sort function as optional
> argument.  Now you need only a function which takes the values of the fileds
> and compares them.
> 
> E.g.
> 
> lst.sort(lambda m, n: cmp(m.get(field), n.get(field)))
> where field is either 'name' or 'size'.

In Python 2.4 a more efficient way of doing this is to use the key parameter to sort() with an 
itemgetter function:

from operator import itemgetter
lst.sort(key=itemgetter('field'))

Kent



More information about the Tutor mailing list