Python: Dictionaries and Sets

Theory: Changing sets

Sets in Python are mutable. You can add and remove elements from them using the add, discard and remove methods:

s = set()
s.add(1)
s.add(2)
s.add(2)
s  # {1, 2}
s.discard(1)
s  # {2}
s.discard(1)
s  # {2}
s.remove(1)  # KeyError: 1

When reading the code in this example, you may have noticed that adding extra elements with add and discarding non-existent ones with discard does not lead to an error. Sets are so patient. However, calling the remove method with a non-existent element results in an error.

Copying and clearing sets

Since sets are changeable, it often becomes necessary to make a copy before changing the original. They are like dictionaries, so they do not support obtaining a slice. We have to use the copy method to copy, which creates a surface copy of the set:

s1 = {1, 2, 3}
s2 = s1.copy()
s1 is s2  # False
s1 == s2  # True
s2.add(4)
s1 == s2  # False
s2  # {1, 2, 3, 4}

To clear the set without creating it again, you can use the clear method:

s = set("foobar")
s  # {'f', 'a', 'r', 'o', 'b'}
s.clear()
s  # set()