-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Thursday, December 09, 2004 12:19 PM
To: tutor@python.org
Subject: Re: [Tutor] sorting a list of dictionaries



On 9 Dez 2004, [EMAIL PROTECTED] 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

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to