Вы можете использовать sorted
с key
и построить OrderedDict
из результата для поддержания порядка.
(последний шаг необходим только для python 3.6 <
, в Python 3.7 диктанты располагаются по времени вставки ключа)
from collections import OrderedDict
d = {"Mellissa":12, "roger":13, "Bob":12}
OrderedDict(sorted(d.items(), key=lambda x: (x[1], x[0])))
# dict(sorted(d.items(), key=lambda x: (x[1], x[0]))) # for Python 3.7
# [('Bob', 12), ('Mellissa', 12), ('roger', 13)]
Или вы также можете использовать operator.itemgetter
для непосредственного извлечения value
и key
из каждого кортежа соответственно:
OrderedDict(sorted(d.items(), key=itemgetter(1,0)))
# dict(sorted(d.items(), key=itemgetter(1,0))) # python 3.7
# [('Bob', 12), ('Mellissa', 12), ('roger', 13)]