Словарь помнит порядок
С версии 3.7 это гарантия языка, а не случайность — и ею можно пользоваться.
Как есть сейчас
Словарь сохраняет порядок, в котором в него добавляли ключи. Это гарантия языка начиная с Python 3.7, а не особенность реализации.
d = {}
d["в"] = 1
d["а"] = 2
list(d) # ['в', 'а'] — именно в таком порядке
Что из этого следует
Чтобы получить словарь в нужном порядке, надо собрать новый, добавляя ключи в нужной последовательности:
poryadok = sorted(itog, key=lambda k: -itog[k])
return {k: itog[k] for k in poryadok}
Отсортировать ключи и вернуть исходный словарь — не работает: порядок в нём остался прежним.
Чего это не значит
Словарь не отсортирован. Он помнит порядок добавления, а не порядок ключей. Если нужен алфавитный — сортируйте сами.
Про OrderedDict
В старом коде встретится collections.OrderedDict — он был нужен,
когда обычный словарь порядка не держал. Сейчас почти всегда лишний.
Отличие осталось одно: при сравнении OrderedDict учитывает порядок,
а обычный словарь — нет.
{"а": 1, "б": 2} == {"б": 2, "а": 1} # True
Множество порядка не хранит
Это соседняя ловушка. set порядка не имеет вовсе, и
list(set(spisok)) возвращает элементы в порядке, на который
полагаться нельзя. Если нужны и уникальность, и порядок — см. разбор
про множества.