Dictionary sorting problem

Irmen de Jong irmen.NOSPAM at xs4all.nl
Fri Sep 16 21:42:40 CEST 2005


JerryB wrote:
> Hi,
> I have a dictionary for counting ocurrences of strings in a document.
> The dictionary looks like this:
> 
> 'hello':135
> 'goodbye':30
> 'lucy':4
> 'sky':55
> 'diamonds':239843
> 'yesterday':4
> 
> I want to print the dictionary so I see most common words first:
> 
> 'diamonds':239843
> 'hello':135
> 'sky':55
> 'goodbye':30
> 'lucy':4
> 'yesterday':4
> 
> How do I do this? Notice I can't 'swap' the dictionary (making keys
> values and values keys) and sort because I have values like lucy &
> yesterday which have the same number of occurrences.
> 
> Thanks.
> 

Don't try to 'swap' the dict, just sort a list based on the items in
the dict. Try this:

original= {
'hello':135,
'goodbye':30,
'lucy':4,
'sky':55,
'diamonds':239843,
'yesterday':4 }

items = sorted( (v,k) for (k,v) in original.iteritems()  )
items.reverse()   # depending on what order you want
print items


The result is:
[(239843, 'diamonds'), (135, 'hello'), (55, 'sky'), (30, 'goodbye'), (4, 'yesterday'), 
(4, 'lucy')]


--Irmen



More information about the Python-list mailing list