В то время как словари упорядочены по вставке в Python 3.6 (как деталь реализации) и официально в 3.7+, для надежного упорядоченного словаря используйте collections.OrderedDict
:
from collections import OrderedDict
res = OrderedDict(sorted(d.items(), key=lambda x: x[1].count))
OrderedDict
является подклассом dict
, поэтому вы не должны терять функциональность.
Если такой порядок * естественный или типичный для ваших объектов класса, рассмотрите возможность определения__eq__
и __lt__
методов для вашего класса , как описано здесь , а затем используйте:
from operator import itemgetter
res = OrderedDict(sorted(d.items(), key=lambda x: x[1]))
res = OrderedDict(sorted(d.items(), key=itemgetter(1))) # functional equivalent