How to sort a dictionary by value (DESC) then by key (ASC)?
key, python, sorting
Solution
Something like
In [1]: d = {'banana': 3, 'orange': 5, 'apple': 5}
In [2]: sorted(d.items(), key=lambda x: (-x[1], x[0]))
Out[2]: [('apple', 5), ('orange', 5), ('banana', 3)]
Problem
Just after discovering the amazing `sorted()`, I became stuck again. The problem is I have a dictionary of the form `string(key) : integer(value)` and I need to sort it in descending order of its integer values, but if two elements where to have same value, then by ascending order of key. An example to make it clearer: ``` d = {'banana':3, 'orange':5, 'apple':5} out: [('apple', 5), ('orange', 5), ('banana', 3)] ``` After doing some research I arrived at something like: ``` sorted(d.items(), key=operator.itemgetter(1,0), reverse=True) out: [('orange', 5), ('apple', 5), ('banana', 3)] ``` This is because it's reverse-sorting both the value and the key. I need the key to be un-reversed.