On Fri, 16 Sep 2005 21:42:40 +0200, Irmen de Jong <[EMAIL PROTECTED]> wrote:
>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')] > > or tell sorted what to do ;-) >>> original= { ... 'hello':135, ... 'goodbye':30, ... 'lucy':4, ... 'sky':55, ... 'diamonds':239843, ... 'yesterday':4 } >>> list(sorted(original.iteritems(), None, lambda t:t[1], True)) [('diamonds', 239843), ('hello', 135), ('sky', 55), ('goodbye', 30), ('yesterday', 4), ('lucy',4)] Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list