# Python Sets

> Learn how to use sets in Python, the unordered and mutable data structure, including intersection, union and difference operations, len() and the in operator.

Author: Flavio Copes | Published: 2020-12-20 | Canonical: https://flaviocopes.com/python-sets/

Sets are another important [Python](https://flaviocopes.com/python-introduction/) data structure.

We can say they work like tuples, but they are not ordered, and they are **mutable**.
Or we can say they work like dictionaries, but they don't have keys.

They also have an immutable version, called `frozenset`.

You can create a set using this syntax:

```python
names = {"Roger", "Syd"}
```

Sets work well when you think about them as mathematical sets.

You can intersect two sets:

```python
set1 = {"Roger", "Syd"}
set2 = {"Roger"}

intersect = set1 & set2 #{'Roger'}
```

You can create a union of two sets:

```python
set1 = {"Roger", "Syd"}
set2 = {"Luna"}

union = set1 | set2
#{'Syd', 'Luna', 'Roger'}
```

You can get the difference between two sets:

```python
set1 = {"Roger", "Syd"}
set2 = {"Roger"}

difference = set1 - set2 #{'Syd'}
```

You can check if a set is a superset of another (and of course if a set is a subset of another)

```python
set1 = {"Roger", "Syd"}
set2 = {"Roger"}

isSuperset = set1 > set2 # True
```

You can count the items in a set with the `len()` global function:

```python
names = {"Roger", "Syd"}
len(names) # 2
```

You can get a list from the items in a set by passing the set to the `list()` constructor:

```python
names = {"Roger", "Syd"}
list(names) #['Syd', 'Roger']
```

You can check if an item is contained into a set with the `in` operator:

```python
print("Roger" in names) # True
```
