# How to use Python sets

Published on

Sets are data structures used for holding unique collections of elements. Meaning, you cannot have duplicate elements in a set.

## Creating sets

You can created a set using Python's `set()` function.

``````# create a unique collection of letters from 'hello'
unique_letters = set("hello")

print(unique_letters)
``````

Output: `{'o', 'h', 'e', 'l'}`

Notice that the duplicate `l` in `hello` was not added to the set.

The order of the output looks a little funky. This is because sets are unordered collections.

The output is also wrapped with curly braces, which can also be used for creating sets.

You can create a set from an existing list by passing the list into the `set()` function.

``````# a list with duplicate numbers
numbers = [1, 1, 1, 2, 3, 4]

# make a set from the list
unique_numbers = set(numbers)

print(unique_numbers)
``````

Output: `{1, 2, 3, 4}`

You can add or remove elements, and check the length of a set.

``````numbers = {1, 2, 3, 4}

numbers.remove(5)

print(len(numbers))
``````

Output: `4`

## Set operations

You can join two sets together, which will remove any duplicate elements.

``````first = {1, 2, 3, 4}
second = {3, 4, 5, 6}

# use '|' to get the union of two sets
print(first | second)
``````

Output: `{1, 2, 3, 4, 5, 6}`

You can find the elements that exist in two sets.

``````first = {1, 2, 3, 4}
second = {3, 4, 5, 6}

# use '&' to get elements that exist in both sets
print(first & second)
``````

Output: `{3, 4}`

You can find elements that exist in one set, but not the other.

``````first = {1, 2, 3, 4}
second = {3, 4, 5, 6}

# use '-' to get elements that exist in the first set
# but not the second set
print(first - second)
``````

Output: `{1, 2}`

You could find the reverse by simply switching the sets around.

``````first = {1, 2, 3, 4}
second = {3, 4, 5, 6}

# use '-' to get elements that exist in the second set
# but not the first set
print(second - first)
``````

Output: `{5, 6}`

You can also find elements that exist in both first and second sets, but do not exist in both.

``````first = {1, 2, 3, 4}
second = {3, 4, 5, 6}

# use '^' to find elements that exist in
# first and second set, but not in both
print(first ^ second)
``````

Output: `{1, 2, 5, 6}`

You can use the above operations with multiple sets.

``````first = {1, 2, 3, 4}
second = {3, 4, 5, 6}
third = {5, 6, 7, 8}
forth = {7, 8, 9, 10}

# union of 4 sets
print(first | second | third | forth)
``````

Output: `{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}`

## Accessing elements in sets

It is important to know that sets do not support indexes. If you try to find an element inside a set using an index, you will get an error.

``````numbers = {1, 2, 3, 4}

print(numbers[0])
``````

Output: `TypeError: 'set' object is not subscriptable` 💥

However, you can loop through elements using a `for` loop.

``````numbers = {1, 2, 3, 4}

for number in numbers:
print(number)
``````

Output: `1`, `2`, `3`, `4`

You can also check for the existing of an element using the `in` keyword.

``````numbers = {1, 2, 3, 4}

if 1 in numbers:
print(True)
else:
print(False)
``````

Output: `True`

## Closing thoughts

Next time you need uniqueness in your data structures, don't use a list with a bunch of loops and conditional statements, use a set instead!

This post was tagged: