Python Set: Creating a Set

This page shows how to create sets in Python, which syntax to use, and what happens with duplicates and empty sets.

A set is useful when you want a collection of unique values. Unlike a list, a set does not keep duplicate items.

Quick answer #

numbers = {1, 2, 3}
words = set(["apple", "banana", "apple"])
empty_set = set()

print(numbers)
print(words)
print(empty_set)

Output:

{1, 2, 3}
{'banana', 'apple'}
set()

Use curly braces with values for a non-empty set. Use set() for an empty set.

What this page covers #

  • How to create a set with curly braces
  • How to create a set with set()
  • How to create an empty set correctly
  • What happens to duplicate values
  • How set creation differs from list, tuple, and dictionary creation

What a set is #

A set is a collection of unique values.

Important things to know:

  • Sets do not keep duplicate items
  • Sets are unordered
  • Sets do not use positions like list indexes
  • Sets are useful when you only care whether a value exists

If you want a full beginner explanation, see Python sets explained or what is a set in Python.

Create a set with curly braces #

Use curly braces with comma-separated values to create a non-empty set.

numbers = {1, 2, 3}
print(numbers)

Possible output:

{1, 2, 3}

This is the shortest way to create a set when you already know the values.

Duplicates are removed automatically #

If you repeat a value, Python keeps only one copy.

numbers = {1, 2, 2, 3, 3, 3}
print(numbers)
print(len(numbers))

Possible output:

{1, 2, 3}
3

Even though 2 and 3 appeared more than once, the set stores each value only once.

Create a set with set() #

Use set() when you want to build a set from another iterable.

Common inputs include:

  • Lists
  • Tuples
  • Strings
  • range()

Create a set from a list #

numbers = set([1, 2, 2, 3, 3, 4])
print(numbers)

Possible output:

{1, 2, 3, 4}

This is a common way to remove duplicates from a list. For a full task-based example, see how to remove duplicates from a list in Python.

Create a set from a tuple #

values = set((10, 20, 20, 30))
print(values)

Possible output:

{10, 20, 30}

Create a set from a string #

letters = set("hello")
print(letters)

Possible output:

{'h', 'e', 'l', 'o'}

The string is treated as an iterable of characters, so the set contains unique letters only.

How to create an empty set #

To create an empty set, use set().

empty_set = set()
print(empty_set)
print(type(empty_set))

Output:

set()
<class 'set'>

Do not use {} #

Empty braces do not create a set.

empty_value = {}
print(empty_value)
print(type(empty_value))

Output:

{}
<class 'dict'>

{} creates an empty dictionary, not an empty set.

What happens with duplicates #

Sets store each value only once.

If the same value appears multiple times, Python removes the extra copies when the set is created.

words = {"apple", "banana", "apple", "apple", "orange"}
print(words)
print(len(words))

Possible output:

{'banana', 'orange', 'apple'}
3

This is why sets are helpful for cleaning repeated data.

Values you can put in a set #

Set items must be hashable. In simple terms, that means Python must be able to treat the value as stable and usable inside a set.

These usually work:

  • Numbers
  • Strings
  • Tuples
  • Booleans
values = {1, "apple", (10, 20), True}
print(values)

These do not work directly:

  • Lists
  • Dictionaries
bad_set = {[1, 2, 3]}

This raises an error:

TypeError: unhashable type: 'list'

Another example:

bad_set = {{"name": "Sam"}}

This also raises an error because dictionaries are unhashable.

Set creation examples beginners need #

Create a set of numbers #

numbers = {1, 2, 3, 4}
print(numbers)

Create a set from a list with duplicates #

items = [1, 1, 2, 3, 3]
unique_items = set(items)

print(unique_items)

Create a set from a string #

letters = set("banana")
print(letters)

Create an empty set #

empty_set = set()
print(empty_set)

Common mistakes #

Here are some common problems beginners run into when creating sets.

Using {} and expecting an empty set #

This is one of the most common mistakes.

value = {}
print(type(value))

This prints:

<class 'dict'>

Use set() instead.

Forgetting that duplicate values are removed #

If you create a set with repeated values, the duplicates disappear.

numbers = {1, 1, 2, 2, 3}
print(numbers)

You will only get the unique values.

Expecting set items to stay in a fixed order #

A set is unordered. You should not rely on item position.

This means code like this does not work:

numbers = {10, 20, 30}
# numbers[0]  # This would cause an error

If you need ordered items by position, use a list instead.

Trying to put a list or dictionary inside a set #

Lists and dictionaries cannot be added directly to a set because they are unhashable.

# bad = {[1, 2]}
# bad = {{"a": 1}}

Both examples would raise a TypeError.

Confusing set creation with dictionary creation #

These look similar, but they are different:

my_set = {1, 2, 3}
my_dict = {"a": 1, "b": 2}

print(type(my_set))
print(type(my_dict))

Useful checks while debugging #

If you are not sure what Python created, these quick checks help:

my_set = set([1, 2, 2, 3])

print(type(my_set))
print(my_set)
print(len(my_set))
print({})
print(set())

Use these to confirm:

  • The object type
  • The actual values stored
  • Whether duplicates were removed
  • The difference between {} and set()

FAQ #

How do you create a set in Python? #

Use curly braces for a non-empty set, like {1, 2, 3}, or use set() with another iterable.

How do you create an empty set in Python? #

Use set(). Empty braces {} create a dictionary, not a set.

Does a set keep duplicates? #

No. Python removes duplicate values automatically when the set is created.

Can a set contain a list? #

No. Lists are mutable and unhashable, so they cannot be stored inside a set.

Is a set ordered in Python? #

No. A set is unordered, so you should not rely on item position.

See also #

Next, learn how to add items to a set or use a set to remove duplicates from data.

Press Esc to close