How to sort a Python dict's keys by value
You could use
res = list(sorted(theDict, key=theDict.__getitem__, reverse=True))
(You don't need the list
in Python 2.x)
The theDict.__getitem__
is actually equivalent to lambda x: theDict[x]
.
(A lambda is just an anonymous function. For example
>>> g = lambda x: x + 5
>>> g(123)
128
This is equivalent to
>>> def h(x):
... return x + 5
>>> h(123)
128
)
>>> d={ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 }
>>> sorted(d, key=d.get, reverse=True)
['keyword3', 'keyword1', 'keyword4', 'keyword2']
i always did it this way....are there advantages to using the sorted method?
keys = dict.keys()
keys.sort( lambda x,y: cmp(dict[x], dict[y]) )
whoops didnt read the part about not using lambda =(