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.