How to sort a Python dict's keys by value

dictionary, python, sorting

Solution

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

)

Problem

I have a dict that looks like this `{ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 }` And I would like to convert it DESC and create a list of just the keywords. Eg, this would return `["keyword3" , "keyword1" , "keyword4" , "keyword2"]` All examples I found use lambda and I'm not very strong with that. Is there a way I could loop through this, and sort them as I go? Thanks for any suggestions. PS: I could create the initial dict differently if it would help.

Original source

Related problems