OrderedDict
and a Normal Dictionary (dict
)Python provides both dict
(normal dictionary) and OrderedDict
from the collections
module. The key difference lies in how they maintain insertion order and handle performance.
dict
)# Normal Dictionary (Python 3.7+ retains order)
my_dict = {"a": 1, "b": 2, "c": 3}
print(my_dict) # Output: {'a': 1, 'b': 2, 'c': 3}
* Insertion order is preserved.
* Faster than OrderedDict
due to internal optimizations.
OrderedDict
(Before Python 3.7, Required for Ordered Keys)move_to_end()
.from collections import OrderedDict
# Creating an OrderedDict
ordered_dict = OrderedDict()
ordered_dict["a"] = 1
ordered_dict["b"] = 2
ordered_dict["c"] = 3
print(ordered_dict) # Output: OrderedDict([('a', 1), ('b', 2), ('c', 3)])
* Ensures order even in Python versions below 3.7.
* Slightly slower due to extra overhead.
OrderedDict
move_to_end(key, last=True)
Moves a key to the end (or start if last=False
).
ordered_dict.move_to_end("b")
print(ordered_dict) # Output: OrderedDict([('a', 1), ('c', 3), ('b', 2)])
==
)d1 = OrderedDict([("a", 1), ("b", 2)])
d2 = OrderedDict([("b", 2), ("a", 1)])
print(d1 == d2) # Output: False (Order matters)
* Unlike a normal dictionary, order matters in comparison.
Feature | dict (Python 3.7+) |
OrderedDict |
---|---|---|
Maintains Order? | Yes | Yes |
Performance | Faster | Slightly Slower |
Extra Features | No | Yes (move_to_end() , order-sensitive equality) |
Use Case | General-purpose | When explicit ordering control is needed |
* Use dict
in Python 3.7+ unless you need OrderedDict
's extra features.