Skip to content
AITroveRead. Build. Understand.
Make this comfortable

Python OrderedDict: explicit reordering differs from insertion order

Last updated: 30 Sept 20264 min read
tutorial
IntermediateBy AITrove Editorial

OrderedDict is a mapping with operations for moving existing keys and removing entries from either end of its retained order.

Download Python source kit

Operation contract

The cache-order fixture moves a receipt to the most-recent end after a read, then removes the oldest retained entry. Replacing a value in an ordinary dictionary does not express that access-order policy. OrderedDict equality against another OrderedDict is order-sensitive, while equality against an ordinary mapping compares key/value content.

Failure and ownership boundary

Ordered mapping is not a sorted mapping. It also supplies no automatic synchronization, expiry or durable cache state. An empty oldest-entry removal raises KeyError. Python LRU cache project: make misses, replacement and eviction explicit must define capacity, misses and updates in addition to choosing a container. Python hash and equality: immutable dictionary keys still governs keys.

Working program

python
from collections import OrderedDict

recent = OrderedDict([("R-0041", 125), ("R-0042", 250)])
recent.move_to_end("R-0041")
print("access order:", list(recent))
print("evicted:", recent.popitem(last=False))
first = OrderedDict([("DEL", 1), ("BOM", 2)])
second = OrderedDict([("BOM", 2), ("DEL", 1)])
print("ordered equality:", first == second)
print("mapping equality:", first == dict(second))

Output

Output
access order: ['R-0042', 'R-0041']
evicted: ('R-0042', 250)
ordered equality: False
mapping equality: True

Costs and limits

Expected key lookup and endpoint reordering avoid scanning all entries under suitable hashes. OrderedDict retains extra ordering state compared with a plain dictionary. It does not order entries by key magnitude or timestamp unless the application updates that order.

Common Mistakes

  • Insertion order is not an access-order cache policy.
  • Order-sensitive equality differs when both operands are OrderedDict.

Connected lessons

Python LRU cache project: make misses, replacement and eviction explicit, Python dictionaries: insertion order and duplicate-key replacement, Python hash and equality: immutable dictionary keys.

Check the next state boundary

Python LRU cache project: make misses, replacement and eviction explicit.

python
ordered-dictionaries
Storage details