Open In App

How to read Dictionary from File in Python?

Last Updated : 12 Nov, 2021
Comments
Improve
Suggest changes
Like Article
Like
Report

A Dictionary in Python is collection of key-value pairs, where key is always unique and oftenly we need to store a dictionary and read it back again.

We can read a dictionary from a file in 3 ways:

  1. Using the json.loads() method : Converts the string of valid dictionary into json form.
  2. Using the ast.literal_eval() method : Function safer than the eval function and can be used for interconversion of all data types other than dictionary as well.
  3. Using the pickle.loads() method : We can also use Pickle module if the file is serialized into a character stream.

Input File: Method 1 : Using json.loads() : Python3 1==
# importing the module
import json

# reading the data from the file
with open('dictionary.txt') as f:
    data = f.read()

print("Data type before reconstruction : ", type(data))
    
# reconstructing the data as a dictionary
js = json.loads(data)

print("Data type after reconstruction : ", type(js))
print(js)
Output :
Data type before reconstruction :  <class 'str'>
Data type after reconstruction :  <class 'dict'>
{'Name': 'John', 'Age': 21, 'Id': 28}
Method 2 : Using ast.literal_eval() : Python3 1==
# importing the module
import ast

# reading the data from the file
with open('dictionary.txt') as f:
    data = f.read()

print("Data type before reconstruction : ", type(data))
    
# reconstructing the data as a dictionary
d = ast.literal_eval(data)

print("Data type after reconstruction : ", type(d))
print(d)
Output :
Data type before reconstruction :  <class 'str'>
Data type after reconstruction :  <class 'dict'>
{'Name': 'John', 'Age': 21, 'Id': 28}
Method 3 : We can use the Pickle module for the same purpose, but this method will only work if the file is serialized into a character stream and not in text format. To know more about Pickling in Python click here Python3 1==
# importing the module
import pickle

# opening file in write mode (binary)
file = open("dictionary.txt", "wb")

my_dict = {"Name": "John",
           "Age": 21,
           "Id": 28}

# serializing dictionary 
pickle.dump(my_dict, file)

# closing the file
file.close()

# reading the data from the file
with open('dictionary.txt', 'rb') as handle:
    data = handle.read()

print("Data type before reconstruction : ", type(data))

# reconstructing the data as dictionary
d = pickle.loads(data)

print("Data type after reconstruction : ", type(d))
print(d)
Output :
Data type before reconstruction :  <class 'bytes'>
Data type after reconstruction :  <class 'dict'>
{'Name': 'John', 'Age': 21, 'Id': 28}

Next Article
Article Tags :
Practice Tags :

Similar Reads