Python | Ways to Copy Dictionary
Dictionary is a collection which is unordered, changeable and indexed. In Python, dictionaries are written with curly brackets, and they have keys and values. It is widely used in day to day programming, web development, and machine learning. When we simply assign dict1 = dict2 it refers to the same dictionary. Let’s discuss a few ways to copy the dictionary from another dictionary.
Method#1: Using copy() copy() method returns a shallow copy of the dictionary. It doesn’t take any parameter and return a new dictionary which is not referring to the initial dictionary.
Python3
test1 = {"name" : "akshat", "name1" : "manjeet", "name2" : "vashu"}
test2 = test1.copy()
test2["name1"] = "nikhil"
print ("initial dictionary = ", test1)
print ("updated dictionary = ", test2)
|
Output
initial dictionary = {'name1': 'manjeet', 'name2': 'vashu', 'name': 'akshat'}
updated dictionary = {'name1': 'nikhil', 'name': 'akshat', 'name2': 'vashu'}
Method #2: Using dict() The dict() is a constructor which creates dictionary in Python.
Python3
test1 = {"name" : "akshat", "name1" : "manjeet", "name2" : "vashu"}
test2 = dict (test1)
test2["name1"] = "nikhil"
print ("initial dictionary = ", test1)
print ("updated dictionary = ", test2)
|
Output
initial dictionary = {'name2': 'vashu', 'name': 'akshat', 'name1': 'manjeet'}
updated dictionary = {'name2': 'vashu', 'name': 'akshat', 'name1': 'nikhil'}
Method#3 : Using Dictionary comprehension
Python3
test1 = {"name" : "akshat", "name1" : "manjeet", "name2" : "vashu"}
test2 = {k:v for k, v in test1.items()}
test2["name1"] = "ayush"
print ("initial dictionary = ", test1)
print ("updated dictionary = ", test2)
|
Output
initial dictionary = {'name': 'akshat', 'name2': 'vashu', 'name1': 'manjeet'}
updated dictionary = {'name': 'akshat', 'name2': 'vashu', 'name1': 'ayush'}
Method #4: Using copy module
One additional approach to copying a dictionary is to use the built-in function deepcopy from the copy module. This function creates a deep copy of the dictionary, meaning that it creates a new dictionary object with new memory addresses for both the keys and the values in the original dictionary. This is useful if you want to create a completely independent copy of the dictionary and any nested objects it contains, such as lists or other dictionaries.
Here’s an example of how to use deepcopy to copy a dictionary:
Python3
from copy import deepcopy
test1 = { "name" : "akshat" , "name1" : "manjeet" , "name2" : "vashu" }
test2 = deepcopy(test1)
test2[ "name1" ] = "nikhil"
print ( "initial dictionary = " , test1)
print ( "updated dictionary = " , test2)
|
Output
initial dictionary = {'name': 'akshat', 'name1': 'manjeet', 'name2': 'vashu'}
updated dictionary = {'name': 'akshat', 'name1': 'nikhil', 'name2': 'vashu'}
The time complexity of using deepcopy to copy a dictionary is O(n), where n is the number of keys and values in the dictionary. The space complexity is also O(n), as a new dictionary object with n keys and values is created in memory.
Last Updated :
30 Dec, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...