Вот простая и прямая реализация инвертирования словаря и сохранения большего из любых повторяющихся значений:
inverted = {}
for k, v in d.iteritems():
if v in inverted:
inverted[v] = max(inverted[v], k)
else:
inverted[v] = k
Это можно немного увеличить с помощью dict.get () :
inverted = {}
for k, v in d.iteritems():
inverted[v] = max(inverted.get(v, k), k)
Этот код выполняет меньше сравнений и использует меньше памяти, чем подход, использующий sorted () .