### Ordered Dictionary in python 3 with example :

Ordered Dictionary or *OrderedDict* is subclass of *Dictionary* in python . It acts similar to a dictionary, i.e. it will have all the methods than a dictionary have. Only difference is that it remembers the *order* how the keys are inserted to the dictionary. If you enter one value with a same *key* previously entered, it will remove the previous value and enter the new value at *last*. Let’s take a look into the difference between one *OrderedDict* and *normal dictionary* with an example :

### Python Example to show how OrderedDict works :

For one normal dictionary :

```
normal_dict = {}
normal_dict['1'] = "one"
normal_dict['2'] = "two"
normal_dict['3'] = "three"
normal_dict['4'] = "four"
normal_dict['5'] = "five"
print("Printing normal Dictionary : ")
for key,value in normal_dict.items():
print("key : {0},value : {1}".format(key,value))
```

The output is :

```
key : 1,value : one
key : 3,value : three
key : 2,value : two
key : 5,value : five
key : 4,value : four
```

So, the key,value pairs are *not ordered* as they are entered. Now, let’s take a look for the Ordered Dictionary :

```
import collections
ordered_dict = collections.OrderedDict()
ordered_dict['1'] = "one"
ordered_dict['2'] = "two"
ordered_dict['3'] = "three"
ordered_dict['4'] = "four"
ordered_dict['5'] = "five"
print("Printing Ordered Dictionary : ")
for key,value in ordered_dict.items():
print("key : {0},value : {1}".format(key,value))
```

The output is :

```
key : 1,value : one
key : 2,value : two
key : 3,value : three
key : 4,value : four
key : 5,value : five
```

The key,value pairs are printed same way they entered.

### Pop an item in Ordered Dict :

We can pop an item from an *OrderedDict* using *popitem* method. *popitem(last=True)* method is used to pop an item. The flag *last* is a *boolean flag*. If last is *true*, the pairs are returned in *LIFO* order. Else returned in *FIFO* order. Let’s try to understand this with an example :

```
import collections
ordered_dict = collections.OrderedDict()
ordered_dict['1'] = "one"
ordered_dict['2'] = "two"
ordered_dict['3'] = "three"
ordered_dict['4'] = "four"
ordered_dict['5'] = "five"
print("pop value with True flag {} ".format(ordered_dict.popitem(True)))
print("pop value with False flag {} ".format(ordered_dict.popitem(False)))
```

### Output :

```
pop value with True flag ('5', 'five')
pop value with False flag ('1', 'one')
```

### Comparing two Ordered Dictionary :

If we compare two *normal dictionaries*, it checks if all items are equal or not. For *Ordered Dictionary*, it also checks the order how the elements are added to both dictionaries. Let’s take a look :

### Example to compare two normal and ordered dictionaries :

```
import collections
normal_dict1 = {}
normal_dict2 = {}
normal_dict1['1'] = "one"
normal_dict1['2'] = "two"
normal_dict1['3'] = "three"
normal_dict1['4'] = "four"
normal_dict1['5'] = "five"
normal_dict2['2'] = "two"
normal_dict2['1'] = "one"
normal_dict2['4'] = "four"
normal_dict2['3'] = "three"
normal_dict2['5'] = "five"
ordered_dict1 = collections.OrderedDict()
ordered_dict2 = collections.OrderedDict()
ordered_dict1['1'] = "one"
ordered_dict1['2'] = "two"
ordered_dict1['3'] = "three"
ordered_dict1['4'] = "four"
ordered_dict1['5'] = "five"
ordered_dict2['2'] = "two"
ordered_dict2['1'] = "one"
ordered_dict2['4'] = "four"
ordered_dict2['3'] = "three"
ordered_dict2['5'] = "five"
if normal_dict1 == normal_dict2 :
print("Normal dictionaries are equal.")
else :
print("Normal dictionaries are not equal.")
if ordered_dict1 == ordered_dict2 :
print("Ordered dictionaries are equal.")
else :
print("Ordered dictionaries are not equal.")
```

### Output :

```
Normal dictionaries are equal.
Ordered dictionaries are not equal.
```

So, the order is equally important for *Ordered dictionaries* if you are comparing two.

### Similar tutorials :

- How to delete a key from a python dictionary
- Python program to find the sum of all values of a dictionary
- How to create a dictionary from two lists in python
- Python dictionary example to find keys with the same value
- Python print dictionary keys and values
- Python find the key of a dictionary with maximum value