> For the complete documentation index, see [llms.txt](https://gyansetu-python.gitbook.io/python-programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gyansetu-python.gitbook.io/python-programming/advanced-data-types/python-ordereddict.md).

# Python orderedDict

An **OrderedDict** is a dictionary subclass that remembers the order that keys were first inserted. The only difference between dict() and OrderedDict() is that:

OrderedDict **preserves the order** in which the keys are inserted. A regular dict doesn’t track the insertion order, and iterating it gives the values in an arbitrary order. By contrast, the order the items are inserted is remembered by OrderedDict.

**Example 1:**

```python
# A Python program to demonstrate working of OrderedDict 
from collections import OrderedDict 
  
print("This is a Dict:\n") 
d = {} 
d['a'] = 1
d['b'] = 2
d['c'] = 3
d['d'] = 4
  
for key, value in d.items(): 
    print(key, value) 
  
print("\nThis is an Ordered Dict:\n") 
od = OrderedDict() 
od['a'] = 1
od['b'] = 2
od['c'] = 3
od['d'] = 4
  
for key, value in od.items(): 
    print(key, value)
```

Output:

('a', 1)&#x20;

('c', 3)&#x20;

('b', 2)&#x20;

('d', 4)

This is an Ordered Dict:&#x20;

('a', 1)&#x20;

('b', 2)&#x20;

('c', 3)&#x20;

('d', 4)

**Important Points:**

1. **Key value Change:** If the value of a certain key is changed, the position of the key remains unchanged in OrderedDict.

```python
import collections

print("dict:")
d1 = {}
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = {}
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

if d1 == d2:
    print("True")
else:
    print("False")

print("Ordered Dic:")

d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = collections.OrderedDict()
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

if d1 == d2:
    print("True")
else:
    print("False")
```

dict:&#x20;

True&#x20;

Ordered Dic:&#x20;

False
