The following works with your input:
d = [('B', 3), ('A', 2), ('A', 1), ('I', 1), ('J', 1)]
sorted(d,key=lambda x:(-x[1],x[0]))
Since your “values” are numeric, you can easily reverse the sort order by changing the sign.
In other words, this sort puts things in order by value (-x[1]
) (the negative sign puts big numbers first) and then for numbers which are the same, it orders according to key (x[0]
).
If your values can’t so easily be “negated” to put big items first, an easy work-around is to sort twice:
from operator import itemgetter
d.sort(key=itemgetter(0))
d.sort(key=itemgetter(1),reverse=True)
which works because python’s sorting is stable.