Methods of Ordered Dictionary in Python

An OrderedDict is a dict that remembers the order that keys were first inserted. If a new entry overwrites an existing entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end. Ordered dictionary somehow can be used in place where there is a use of hash Map and queue. It has characteristics of both into one. Like queue it remembers the order and it also allows insertion and deletion at both end. And like dictionary is also behaves as a hash map. 

Note: From Python 3.6 onwards, order is retained for keyword arguments passed to the OrderedDict constructor, refer PEP-468. 

Methods of ordered Dictionary

popitem()

This method is used to delete a key from the begining. There are two versions of this function

1. popitem(last = False)                      

This method would delete a key from beginning of the dictionary. This serves as FIFO(First In First Out) in queue.



2. popitem(last = True) or popitem()   

By default last = True. This method would delete key from the end of dictionary.

Time Complexity : O(1).

For Better Understanding have a look at the code.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

from collections import OrderedDict
  
  
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
  
# Pop the key from last
ord_dict.popitem()
print("\nAfter Deleting Last item :")
print(ord_dict)
  
# Pop the key from beginning
ord_dict.popitem(last = False)
print("\nAfter Deleting Key from Beginning :")
print(ord_dict)

chevron_right


Output:

Original Dictionary
OrderedDict([(‘G’, None), (‘e’, None), (‘k’, None), (‘s’, None), (‘F’, None), (‘o’, None), (‘r’, None)])

After Deleting Last item :
OrderedDict([(‘G’, None), (‘e’, None), (‘k’, None), (‘s’, None), (‘F’, None), (‘o’, None)])

After Deleting Key from Beginning :
OrderedDict([(‘e’, None), (‘k’, None), (‘s’, None), (‘F’, None), (‘o’, None)])

move_to_end()

This method is used to move an existing key of the dictionary either to end or to the begining. There are two versions of this function – 



1. move_to_end(key, last = False)

Above method would move a existing key of dictionary in the beginning. Now the key you inserted is in the beginning .  And you can perforn your operations  at this key. It serves as FIFO ( First In First Out ) in queue.

move_to_end(key, last = True) or move_to_end(key)  

By default last = True. This method would move a existing key of dictionary in the end.

Time Complexity : O(1) 

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

from collections import OrderedDict
  
  
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
  
# Move the key to  end
ord_dict.move_to_end('G')
print("\nAfter moving key 'G' to end of dictionary :")
print(ord_dict)
  
# Move the key to beginning
ord_dict.move_to_end('k', last = False)
print("\nAfter moving Key in the Beginning :")
print(ord_dict)

chevron_right


Output:

Original Dictionary
OrderedDict([(‘G’, None), (‘e’, None), (‘k’, None), (‘s’, None), (‘F’, None), (‘o’, None), (‘r’, None)])

After moving key ‘G’ to end of dictionary :
OrderedDict([(‘e’, None), (‘k’, None), (‘s’, None), (‘F’, None), (‘o’, None), (‘r’, None), (‘G’, None)])

After moving Key in the Beginning :
OrderedDict([(‘k’, None), (‘e’, None), (‘s’, None), (‘F’, None), (‘o’, None), (‘r’, None), (‘G’, None)])

Working of move_to_end() function

Basically, this method looks up a link in a linked list in a dictionary self.__map and updates the previous and next pointers for the link and its neighbours. It deletes that element from it’s position and add it to end or beginning depending upon parameter value. Since all of the operations below take constant time, the complexity of OrderedDict.move_to_end()  is constant as well.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.