One can take advantage of the fact that sort works on tuples by considering the first element as more important than the second etc:
d = { "a":4, "c":3, "b":12 }
d_view = [ (v,k) for k,v in d.iteritems() ]
d_view.sort(reverse=True) # natively sort tuples by first element
for v,k in d_view:
print "%s: %d" % (k,v)
Output:
b: 12
a: 4
c: 3
EDIT: one-liner, generator expression:
sorted( ((v,k) for k,v in d.iteritems()), reverse=True)
Output:
[(12, 'b'), (4, 'a'), (3, 'c')]