14.4. Aliasing and CopyingΒΆ

Because dictionaries are mutable, you need to be aware of aliasing (as we saw with lists). Whenever two variables refer to the same dictionary object, changes to one affect the other. For example, opposites is a dictionary that contains pairs of opposites.

As you can see from the is operator, alias and opposites refer to the same object.

If you want to modify a dictionary and keep a copy of the original, use the dictionary copy method. Since acopy is a copy of the dictionary, changes to it will not effect the original.

acopy = opposites.copy()
acopy['right'] = 'left'    # does not change opposites

Check your understanding

    dict-4-1: What is printed by the following statements?

    mydict = {"cat":12, "dog":6, "elephant":23, "bear":20}
    yourdict = mydict
    yourdict["elephant"] = 999
    print(mydict["elephant"])
    
  • 23
  • mydict and yourdict are both names for the same dictionary.
  • None
  • The dictionary is mutable so changes can be made to the keys and values.
  • 999
  • Yes, since yourdict is an alias for mydict, the value for the key elephant has been changed.
  • Error, there are two different keys named elephant.
  • There is only one dictionary with only one key named elephant. The dictionary has two different names, mydict and yourdict.