Ordered Dictionary - OrderedDict
The built-in dict
class gained the ability to remember insertion order since Python 3.7.
OrderedDict
vs. dict
Use Case
For space efficiency, iteration speed, and the performance of update operations, use dict
;
For reordering operations, use OrderedDict
.
Equality operation
assert isinstance(od1, OrderedDict)
assert isinstance(od2, OrderedDict)
assert isinstance(d1, dict)
assert isinstance(d2, dict)
# order-sensitive
od1 == od2
d1 == d2 and all(k1 == k2 for k1, k2 in zip(d1, d2))
Pop Items
assert isinstance(od, OrderedDict)
assert isinstance(d, dict)
# last (rightmost) item
od.popitem() == d.popitem()
# first (leftmost) item
od.popitem(last=False) == (k := next(iter(d)), d.pop(k))
Re-ordering
assert isinstance(od, OrderedDict)
assert isinstance(d, dict)
# move to last
od.move_to_end(k) == d[k] = d.pop(k)
# move to first
od.move_to_end(k, last=False) # `dict` does not have an efficient equivalent