The set type is a really useful data structure, it cannot contain duplicate values. It is an unordered collection of objects. It supports:
- in
- not in
- for i in set
- len()
- all()
- any()
- enumerate()
- min()
- max()
- sorted()
- sum()
Python sets also support mathematical operations including:
- Subset (x < y)
- Intersection (x & y)
- Union (x | y)
- Difference (x – y)
- Equality (x == y)
Sets have the following methods you can invoke:
- add()
- clear()
- copy()
- difference()
- difference_update()
- discard()
- intersection()
- intersection_update()
- isdisjoint()
- issubset()
- issuperset()
- pop()
- remove()
- symmetric_difference()
- symmetric_difference_update()
- union()
- update()
You can create a set from a set literal:
countries = {"England", "Australia", "Ireland", "Singapore", "USA"}
Or using the constructor:
country_list = ["England", "Australia", "Ireland", "Singapore", "USA"]
countries = set(country_list)
An example of creating a set of duplicates found in a list:
chars = ['a', 'b', 'a', 'c', 'd', 'd', 'x', 'y', 'y', 'z']
duplicates = set([c for c in chars if chars.count(c) > 1])
print(duplicates)
# outputs:
{'y', 'a', 'd'}
Finally, a simple example of using some common methods:
countries = {"England", "Australia", "Ireland", "Singapore", "USA", "China",
"Spain", "Indonesia", "Malaysia", "Wales", "Italy"}
visited = {"England", "Australia", "Ireland", "Singapore", "Indonesia",
"Malaysia", "Wales", "Italy"}
worked_in = {"England", "Australia", "Ireland", "Singapore"}
next_trip = {"USA"}
print('subset: visited is a subset of countries: ', visited < countries)
print('intersection: countries visited: ', countries & visited)
print('difference: visited but not worked in: ', visited - worked_in)
print('union: visited and next_trip: ', visited | next_trip)
print('equality: visited all countries: ', visited == countries)
worked_in.clear()
print('worked_in is empty: ', len(worked_in) == 0)
visited.add('USA')
# silently ignores the duplicate, it is not added to the set
visited.add('USA')
# throws an exception if Wales is not in the set
visited.remove('Wales')
# does not throw an exception if Belgium is not in the set
visited.discard('Belgium')
# let's visit the rest of the countries
visited.update(['USA', 'China', 'Spain'])
print('equality: visited all countries: ', visited == countries)
# membership test
print("USA" in countries)
print("France" not in countries)
# iteration
for country in countries:
print(country)
For more information, see the official docs here.