How to sort a dictionary by value (DESC) then by key (ASC)?

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.


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)]