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.
Custom Sorting With key= For example with a list of strings, specifying key=len (the built in len() function) sorts the strings by length, from shortest to longest. The sort calls len() for each string to get the list of proxy length values, and then sorts with those proxy values.
To sort a dictionary by key in Python, use a combination of the sort() and OrderedDict() methods. The OrderedDict() is a method of the collections module that returns an instance of a dict subclass with a method specialized for rearranging dictionary order.
Sort Dictionary Using a for Loop We can sort a dictionary with the help of a for loop. First, we use the sorted() function to order the values of the dictionary. We then loop through the sorted values, finding the keys for each value. We add these keys-value pairs in the sorted order into a new dictionary.
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
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With