Insert into OrderedDict behind key "foo" (inplace)

guettli picture guettli · Mar 25, 2015 · Viewed 11.6k times · Source

I want to insert a key behind a given key in a OrdedDict.

Example:

my_orderded_dict=OrderedDict([('one', 1), ('three', 3)])

I want 'two' --> 2 to get into the right place.

In my case I need to update the OrdedDict in-place.

Background

SortedDict of Django (which has an insert()) gets removed: https://code.djangoproject.com/wiki/SortedDict

Answer

guettli picture guettli · Mar 25, 2015
from collections import OrderedDict # SortedDict of Django gets removed: https://code.djangoproject.com/wiki/SortedDict

my_orderded_dict=OrderedDict([('one', 1), ('three', 3)])

new_orderded_dict=my_orderded_dict.__class__()
for key, value in my_orderded_dict.items():
    new_orderded_dict[key]=value
    if key=='one':
        new_orderded_dict['two']=2
my_orderded_dict.clear()
my_orderded_dict.update(new_orderded_dict)
print my_orderded_dict