Python Glossary English

все Python 3collectionsпонятие

collections.OrderedDict

ordereddict

Словарь, запоминающий порядок вставки. move_to_end() перемещает ключ в начало или конец.

Синтаксис

collections.OrderedDict([items])
odict.move_to_end(key, last=True)

С Python 3.7 обычный dict и так гарантирует порядок вставки, поэтому OrderedDict нужен уже не ради порядка, а ради трёх вещей: move_to_end(), popitem(last=False) для снятия элемента с начала и равенства, которое учитывает порядок — два OrderedDict с одинаковыми парами, но в разной последовательности, не равны, тогда как обычные dict равны. Типичный сценарий сегодня — LRU-кеш: обращение к ключу двигаем в конец, вытесняем с начала.

Примеры

from collections import OrderedDict
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)  # → OrderedDict({'a': 1, 'b': 2, 'c': 3}) — так repr выглядит с 3.12
od.move_to_end('a')
print(list(od))  # → ['b', 'c', 'a']
od.move_to_end('a', last=False)
print(list(od))  # → ['a', 'b', 'c'] — в начало
print(od.popitem(last=True))  # → ('c', 3) — последний
print(od.popitem(last=False))  # → ('a', 1) — первый

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности