Open In App

How to convert a nested OrderedDict to dict?

Last Updated : 24 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will discuss how to convert a nested OrderedDict to dict? Before this we must go through some concepts:

  • Dictionary in Python is an unordered collection of data values, used to store data values like a map, which, unlike other Data Types that hold only a single value as an element, Dictionary holds the key:value pair. Key-value is provided in the dictionary to make it more optimized.
  • An OrderedDict is a dictionary subclass that remembers the order in 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 in the items are inserted is remembered by OrderedDict.

To define the nested OrderedDict, we are using the collections module in python.

Python3




#import package
from collections import OrderedDict
 
# define OrderedDict
od1 = OrderedDict([('1', 'one'), ('2', 'two')])
print(type(od1))
print(od1)
 
# define nested OrderedDict
od2 = OrderedDict([('1', 'one'),
                   ('2', OrderedDict([('-2',
                                       '-ive'),
                                      ('+2',
                                       '+ive')]))])
print(type(od2))
print(od2)


Output:

<class ‘collections.OrderedDict’>

OrderedDict([(‘1’, ‘one’), (‘2’, ‘two’)])

<class ‘collections.OrderedDict’>

OrderedDict([(‘1’, ‘one’), (‘2’, OrderedDict([(‘-2’, ‘-ive’), (‘+2’, ‘+ive’)]))])

We can convert the OrderedDict to dict in just one line, but this is for only simple OrderedDict, not for the nested OrderedDict.

Python3




# import package
from collections import OrderedDict
 
# define OrderedDict
od1 = OrderedDict([('1', 'one'), ('2', 'two')])
 
# convert to dict
od1 = dict(od1)
 
# display dictionary
print(type(od1))
print(od1)


Output:

<class 'dict'>
{'1': 'one', '2': 'two'}

So, to convert nested OrderedDict to dict, we are using json.loads() and json.dumps() methods. 

  • The full form of JSON is JavaScript Object Notation. It means that a script (executable) file which is made of text in a programming language, is used to store and transfer the data. Python supports JSON through a built-in package called JSON. To use this feature, we import the JSON package in Python script. The text in JSON is done through quoted-string which contains the value in key-value mapping within { }. It is similar to the dictionary in Python.
  • The json.loads() method can be used to parse a valid JSON string and convert it into a Python Dictionary. It is mainly used for deserializing native string, byte, or byte array which consists of JSON data into Python Dictionary.
  • The json.dumps() function converts a Python object into a json string.

Python3




# import package
from collections import OrderedDict
import json
 
# define nested OrderedDict
od2 = OrderedDict([('1', 'one'),
                   ('2', OrderedDict([('-2',
                                       '-ive'),
                                      ('+2',
                                       '+ive')]))])
# convert to dict
od2 = json.loads(json.dumps(od2))
 
# display dictionary
print(type(od2))
print(od2)


Output:

<class 'dict'>
{'1': 'one', '2': {'-2': '-ive', '+2': '+ive'}}


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads