# Python Sets

In this tutorial, we will learn Set and its various operations in Python with the help of examples.

## Video: Sets in Python

A set is a collection of unique data. That is, elements of a set cannot be duplicate. For example,

Suppose we want to store information about student IDs. Since student IDs cannot be duplicate, we can use a set.

## Create a Set in Python

In Python, we create sets by placing all the elements inside curly braces `{}`, separated by comma.

A set can have any number of items and they may be of different types (integer, float, tuple, string etc.). But a set cannot have mutable elements like lists, sets or dictionaries as its elements.

Let's see an example,

``````# create a set of integer type
student_id = {112, 114, 116, 118, 115}
print('Student ID:', student_id)

# create a set of string type
vowel_letters = {'a', 'e', 'i', 'o', 'u'}
print('Vowel Letters:', vowel_letters)

# create a set of mixed data types
mixed_set = {'Hello', 101, -2, 'Bye'}
print('Set of mixed data types:', mixed_set)``````

Output

```Student ID: {112, 114, 115, 116, 118}
Vowel Letters: {'u', 'a', 'e', 'i', 'o'}
Set of mixed data types: {'Hello', 'Bye', 101, -2}```

In the above example, we have created different types of sets by placing all the elements inside the curly braces `{}`.

Note: When you run this code, you might get output in a different order. This is because the set has no particular order.

## Create an Empty Set in Python

Creating an empty set is a bit tricky. Empty curly braces `{}` will make an empty dictionary in Python.

To make a set without any elements, we use the set() function without any argument. For example,

``````# create an empty set
empty_set = set()

# create an empty dictionary
empty_dictionary = { }

# check data type of empty_set
print('Data type of empty_set:', type(empty_set))

# check data type of dictionary_set
print('Data type of empty_dictionary', type(empty_dictionary))``````

Output

```Data type of empty_set: <class 'set'>
Data type of empty_dictionary <class 'dict'>```

Here,

• empty_set - an empty set created using `set()`
• empty_dictionary - an empty dictionary created using `{}`

Finally we have used the `type()` function to know which class empty_set and empty_dictionary belong to.

## Duplicate Items in a Set

Let's see what will happen if we try to include duplicate items in a set.

``````numbers = {2, 4, 6, 6, 2, 8}
print(numbers)   # {8, 2, 4, 6}``````

Here, we can see there are no duplicate items in the set as a set cannot contain duplicates.

## Add and Update Set Items in Python

Sets are mutable. However, since they are unordered, indexing has no meaning.

We cannot access or change an element of a set using indexing or slicing. Set data type does not support it.

### Add Items to a Set in Python

In Python, we use the `add()` method to add an item to a set. For example,

``````numbers = {21, 34, 54, 12}

print('Initial Set:',numbers)

# using add() method

print('Updated Set:', numbers) ``````

Output

```Initial Set: {34, 12, 21, 54}
Updated Set: {32, 34, 12, 21, 54}```

In the above example, we have created a set named numbers. Notice the line,

``numbers.add(32)``

Here, `add()` adds 32 to our set.

### Update Python Set

The `update()` method is used to update the set with items other collection types (lists, tuples, sets, etc). For example,

``````companies = {'Lacoste', 'Ralph Lauren'}
tech_companies = ['apple', 'google', 'apple']

companies.update(tech_companies)

print(companies)

# Output: {'google', 'apple', 'Lacoste', 'Ralph Lauren'}``````

Here, all the unique elements of `tech_companies` are added to the `companies` set.

## Remove an Element from a Set

We use the `discard()` method to remove the specified element from a set. For example,

``````languages = {'Swift', 'Java', 'Python'}

print('Initial Set:',languages)

# remove 'Java' from a set

print('Set after remove():', languages)``````

Output

```Initial Set: {'Python', 'Swift', 'Java'}
Set after remove(): {'Python', 'Swift'}```

Here, we have used the `discard()` method to remove `'Java'` from the languages set.

## Built-in Functions with Set

Built-in functions like `all()`, `any()`, `enumerate()`, `len()`, `max()`, `min()`, `sorted()`, `sum()` etc. are commonly used with sets to perform different tasks.

Function Description
all() Returns `True` if all elements of the set are true (or if the set is empty).
any() Returns `True` if any element of the set is true. If the set is empty, returns `False`.
enumerate() Returns an enumerate object. It contains the index and value for all the items of the set as a pair.
len() Returns the length (the number of items) in the set.
max() Returns the largest item in the set.
min() Returns the smallest item in the set.
sorted() Returns a new sorted list from elements in the set(does not sort the set itself).
sum() Returns the sum of all elements in the set.

## Iterate Over a Set in Python

``````fruits = {"Apple", "Peach", "Mango"}

# for loop to access each fruits
for fruit in fruits:
print(fruit)``````

Output

```Mango
Peach
Apple```

## Find Number of Set Elements

We can use the `len()` method to find the number of elements present in a Set. For example,

``````even_numbers = {2,4,6,8}
print('Set:',even_numbers)

# find number of elements
print('Total Elements:', len(even_numbers))``````

Output

```Set: {8, 2, 4, 6}
Total Elements: 4```

Here, we have used the `len()` method to find the number of elements present in a Set.

## Python Set Operations

Python Set provides different built-in methods to perform mathematical set operations like union, intersection, subtraction, and symmetric difference.

### Union of Two Sets

The union of two sets A and B include all the elements of set A and B.

We use the `|` operator or the `union()` method to perform the set union operation. For example,

``````# first set
A = {1, 3, 5}

# second set
B = {0, 2, 4}

# perform union operation using |
print('Union using |:', A | B)

# perform union operation using union()
print('Union using union():', A.union(B)) ``````

Output

```Union using |: {0, 1, 2, 3, 4, 5}
Union using union(): {0, 1, 2, 3, 4, 5}```

Note: `A|B` and `union()` is equivalent to `A ⋃ B` set operation.

### Set Intersection

The intersection of two sets A and B include the common elements between set A and B.

In Python, we use the `&` operator or the `intersection()` method to perform the set intersection operation. For example,

``````# first set
A = {1, 3, 5}

# second set
B = {1, 2, 3}

# perform intersection operation using &
print('Intersection using &:', A & B)

# perform intersection operation using intersection()
print('Intersection using intersection():', A.intersection(B)) ``````

Output

```Intersection using &: {1, 3}
Intersection using intersection(): {1, 3}```

Note: `A&B` and `intersection()` is equivalent to `A ⋂ B` set operation.

### Difference between Two Sets

The difference between two sets A and B include elements of set A that are not present on set B.

We use the `-` operator or the `difference()` method to perform the difference between two sets. For example,

``````# first set
A = {2, 3, 5}

# second set
B = {1, 2, 6}

# perform difference operation using &
print('Difference using &:', A - B)

# perform difference operation using difference()
print('Difference using difference():', A.difference(B)) ``````

Output

```Difference using &: {3, 5}
Difference using difference(): {3, 5}```

Note: `A - B` and `A.difference(B)` is equivalent to `A - B` set operation.

### Set Symmetric Difference

The symmetric difference between two sets A and B includes all elements of A and B without the common elements.

In Python, we use the `^` operator or the `symmetric_difference()` method to perform symmetric difference between two sets. For example,

``````# first set
A = {2, 3, 5}

# second set
B = {1, 2, 6}

# perform difference operation using &
print('using ^:', A ^ B)

# using symmetric_difference()
print('using symmetric_difference():', A.symmetric_difference(B)) ``````

Output

```using ^: {1, 3, 5, 6}
using symmetric_difference(): {1, 3, 5, 6}```

## Check if two sets are equal

We can use the `==` operator to check whether two sets are equal or not. For example,

``````# first set
A = {1, 3, 5}

# second set
B = {3, 5, 1}

# perform difference operation using &
if A == B:
print('Set A and Set B are equal')
else:
print('Set A and Set B are not equal')``````

Output

`Set A and Set B are equal`

In the above example, A and B have the same elements, so the condition

``if A == B``

evaluates to `True`. Hence, the statement `print('Set A and Set B are equal')` inside the `if` is executed.

## Other Python Set Methods

There are many set methods, some of which we have already used above. Here is a list of all the methods that are available with the set objects:

Method Description
add() Adds an element to the set
clear() Removes all elements from the set
copy() Returns a copy of the set
difference() Returns the difference of two or more sets as a new set
difference_update() Removes all elements of another set from this set
discard() Removes an element from the set if it is a member. (Do nothing if the element is not in set)
intersection() Returns the intersection of two sets as a new set
intersection_update() Updates the set with the intersection of itself and another
isdisjoint() Returns `True` if two sets have a null intersection
issubset() Returns `True` if another set contains this set
issuperset() Returns `True` if this set contains another set
pop() Removes and returns an arbitrary set element. Raises `KeyError` if the set is empty
remove() Removes an element from the set. If the element is not a member, raises a `KeyError`
symmetric_difference() Returns the symmetric difference of two sets as a new set
symmetric_difference_update() Updates a set with the symmetric difference of itself and another
union() Returns the union of sets in a new set
update() Updates the set with the union of itself and others