collections.OrderedDict#

OrderedDict похож на обычные словари, но имеют некоторые дополнительные возможности, связанные с операциями упорядочивания. Начиная с Python 3.7, обычные словари также стали упорядоченными, но при этом в OrderedDict остались несколько полезных возможностей:

  • Обычный dict оптимизирован на операции mapping (getitem, setitem, deleteitem)

  • OrderedDict оптимизирован под операции переупорядочивание

  • Алгоритмически OrderedDict может обрабатывать частые операции переупорядочения лучше, чем dict

  • При сравнении равенства словарей, OrderedDict учитывает соответствие порядка

  • У OrderedDict есть метод move_to_end() для эффективного перемещения элемента в конец словаря

class collections.OrderedDict([items])
  • popitem(last=True)

  • move_to_end(key, last=True)

In [10]: d1 = {1: 100, 2: 200}

In [11]: d2 = {2: 200, 1: 100}

In [12]: d1 == d2
Out[12]: True

In [13]: from collections import OrderedDict

In [14]: o1 = OrderedDict({1: 100, 2: 200})

In [15]: o2 = OrderedDict({2: 200, 1: 100})

In [16]: o1 == o2
Out[16]: False

move_to_end#

In [17]: o1
Out[17]: OrderedDict([(1, 100), (2, 200)])

In [18]: o1.move_to_end(1)

In [19]: o1
Out[19]: OrderedDict([(2, 200), (1, 100)])