[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