Search code examples
pythondictionarydata-structuresordereddictionary

How does OrderedDict keep things in Order in Python


I'm curious as to how OrderedDict from the collections library keeps key/pair order? I looked around online and couldn't find an answer.


Solution

  • From the source code, it appears to be implemented as a dict with a doubly linked list of keys for ordering, as well as another dict that maps keys to their position in the list.

    • Insertion just adds to the end of the list.
    • Deletion uses the second dict to remove an element from the list.
    • Iteration iterates over the linked list.