Dictionaries are useful data structures frequently used in Python programming. There are several ways to make copies of dictionaries.
for
loopA 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)
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)
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)