How to copy a dictionary in Python
Dictionaries are useful data structures frequently used in Python programming. There are several ways to make copies of dictionaries.
1. Use a for loop
A for loop can be used to iterate through the original dictionary and copy the elements into a new, empty dictionary one by one.
With this method, a shallow copy is produced. If you change this copy of the dictionary, it will not change the original dictionary. However, if one of the elements is an iterable object and a change is made to that element in the shallow copy, the same change will be reflected in the original copy.
# delcaring a dictionaryoriginalDict = {1: "A", 2: "B", 3: ["a", "b"]}# declaring a new, empty dictionaryshallowCopy = {}print("Original Dictionary:", originalDict)# creating a shallow copy using for loopfor key, value in originalDict.items():shallowCopy[key] = valueprint("Shallow copy: ", shallowCopy)# adding an element to the shallow copyshallowCopy[4] = "D"# printing the shallow copy after adding an elementprint("Shallow copy after adding an element: ", shallowCopy)# printing the original dictionary to show no changes took placeprint("Original dictionary remains the same: ", originalDict)# however, making a change in the 3rd value of the shallow copy# which is a list, will result in the original dictionary being changedshallowCopy[3].append("hello")print("Shallow Copy after changing list element:", shallowCopy)print("Original Dictionary also changes: ", originalDict)
2. Use copy()
This is a built-in Python function that can be used to create a shallow copy of a dictionary.
dictionary.copy()
This function takes no arguments and returns a shallow copy of the dictionary. When a change is made to the shallow copy, the original dictionary will remain unchanged. Like the for loop method, the exception of the iterable object is present here.
# delcaring a dictionaryoriginalDict = {1: "Lahore", 2: "Islamabad", 3: "Karachi"}print("Original Dictionary:", originalDict)# creating a shallow copy using functionshallowCopy = originalDict.copy()print("Shallow copy: ", shallowCopy)# adding an element to the shallow copyshallowCopy[4] = "Quetta"# printing the shallow copy after adding an elementprint("Shallow copy after appending an element: ", shallowCopy)# printing the original dictionary to show no changes took placeprint("Original dictionary remains the same: ", originalDict)
3. Use dict()
The built-in dict() function can be used to make a shallow copy of a dictionary.
dict(originalDict)
This function will take the dictionary to be copied as an argument and return a shallow copy of that dictionary. WHen a change is made to the shallow copy, the original remains unchanged, unless a change is made to an iterable element.
# delcaring a dictionaryoriginalDict = {1: "Lahore", 2: "Islamabad", 3: "Karachi"}print("Original Dictionary:", originalDict)# creating a shallow copy using functionshallowCopy = dict(originalDict)print("Shallow copy: ", shallowCopy)# adding an element to the shallow copyshallowCopy[4] = "Quetta"# printing the shallow copy after adding an elementprint("Shallow copy after appending an element: ", shallowCopy)# printing the original dictionary to show no changes took placeprint("Original dictionary remains the same: ", originalDict)