# Sets in Python

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:

• clear()
• copy()
• difference()
• difference_update()
• 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)

# silently ignores the duplicate, it is not added to the set

# 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

# 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)``````