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