How to copy a dictionary and only edit the copy

dictionary, python, reference

Solution

Python never implicitly copies objects. When you set `dict2 = dict1`, you are making them refer to the same exact dict object, so when you mutate it, all references to it keep referring to the object in its current state.

If you want to copy the dict (which is rare), you have to do so explicitly with

dict2 = dict(dict1)

or

dict2 = dict1.copy()

Problem

I set `dict2 = dict1`. When I edit `dict2`, the original `dict1` also changes. Why? ``` >>> dict1 = {"key1": "value1", "key2": "value2"} >>> dict2 = dict1 >>> dict2["key2"] = "WHY?!" >>> dict1 {'key2': 'WHY?!', 'key1': 'value1'} ```

Original source

Related problems