Упорядоченный словарь. Хранит порядок вставки в него элементов.
OrderedDict([items])

Внимание
Начиная с +py3.6 (и официально гарантировано с +py3.7) и обычные словари — dict() — сохраняют порядок вставки элементов.

Упорядоченные словари походи на обычные, но хранят порядок вставки в них элементов. При итерировании по упорядоченному словарю, его элементы выдаются в том порядке, в каком они были в него добавлены.

То есть, даже если значение по ключу обновляется, изначально заданное место ключа в словаре остаётся неизменным. Однако, если удалить ключ и вставить заново, то он очутится на последнем месте.

    from collections import OrderedDict

mydict = OrderedDict()
mydict['z'] = 'первый'
mydict['a'] = 'последний'

mydict['z'] = 'первый всё ещё'

for key in mydict:
print(key) # a z

Проверка на равенство одного упорядоченного словаря другому учитывает порядок их элементов: list(odict1.items())==list(odict2.items()). В то же время при сравнении с другими представителями отображений порядок во внимание не принимается: это позволяет использовать OrderedDict в тех местах, где используются обычные словари.

На заметку
По сравнению с обычными словарями для OrderedDict вопросы об эффективности использования памяти, скорости итерирования, быстродействия операций обновления были отодвинуты на второй план. На первом месте — операции, связанные с [пере]определением порядка. Поэтому упорядоченные словари выигрывают в сценариях, с частым переупорядочиванием элементов, подобных LRU-кешу.

В остальном, упорядоченный словарь ведёт себя аналогично обычному (наследует его свойства и методы), предлагая, однако же, дополнительные инструменты.

На заметку
Больше информации о словарях можно почерпнуть из видео Современные словари в Python: Сочетание дюжины отличных идей.

+py3.5 Добавлена поддержка reversed() для элементов (items), ключей (keys), значений (values).

+py3.6 После принятия PEP-468, порядок именованных аргументов при вызовах OrderedDict(z=1, a=2) и .update() тоже учитывается.

+py3.8 В соответствии с PEP-584 добавлена поддержка операторов слияния (|) и обновления (|=).
Синонимы поиска: collections, OrderedDict
В разделе «collections»: collections.Counter
Нет обсуждений для отображения.

Если у вас есть, что сказать, можете представиться и исправить ситуацию.

На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.