Set¶

Another very common Python data structure. Back when Python was young, sets were essentially reduced dictionaries, but over time their paths (and implementations) began to diverge. However, a set is still a hash table with corresponding performance characteristics for different types of operations.

Unlike a list, for example, a set does not support duplicate elements.

In [ ]:
big_cities: set["str"] = {"New-York", "Los Angeles", "Ottawa"}
american_cities: set["str"] = {"Chicago", "New-York", "Los Angeles"}

big_cities |= {"Sydney"}  # Add a value (or add())
american_cities |= {"Salt Lake City", "Seattle"}  # Union of sets (or update())

print(big_cities, american_cities)

union_cities: set["str"] = big_cities | american_cities  # Or union()
intersected_cities: set["str"] = big_cities & american_cities  # Or intersection()
dif_cities: set["str"] = big_cities - american_cities  # Or difference()
symdif_cities: set["str"] = big_cities ^ american_cities  # Or symmetric_difference()

issub: bool = big_cities <= union_cities  # Or issubset()
issuper: bool = american_cities >= dif_cities  # Or issuperset()

print(union_cities)
print(intersected_cities)
print(dif_cities)
print(symdif_cities)

print(issub, issuper)

big_cities.add("London")

big_cities.remove("Ottawa")  # Removes a value if it exists or raises a KeyError
big_cities.discard("Los Angeles")  # Removes a value without raising a KeyError
big_cities.pop()  # Returns and removes a random value (the order in a set is undefined) or raises a KeyError
big_cities.clear()  # Clears the set
{'New-York', 'Los Angeles', 'Sydney', 'Ottawa'} {'New-York', 'Seattle', 'Chicago', 'Los Angeles', 'Salt Lake City'}
{'Ottawa', 'Salt Lake City', 'Chicago', 'New-York', 'Seattle', 'Sydney', 'Los Angeles'}
{'New-York', 'Los Angeles'}
{'Ottawa', 'Sydney'}
{'Seattle', 'Ottawa', 'Chicago', 'Salt Lake City', 'Sydney'}
True False