How to Declare a Set in Python

What you’ll build or solve

You’ll declare a set in Python, either by creating one with initial values or starting empty.

When this approach works best

A set works best when you want to:

  • Keep a collection of values with no duplicates, like tags, IDs, or usernames.
  • Deduplicate data fast before further processing, like cleaning a list of inputs.
  • Do quick membership checks, like “have I seen this value already?”

A set is a bad fit when you need order, duplicates, or index-based access. Use a list for ordered data, or a dictionary for key-value data.

Prerequisites

  • Python 3 installed
  • Basic understanding of variables and lists

Step-by-step instructions

1) Create a set (with values or empty)

You can declare a set using curly braces with values, or by calling set().

Option A: Create a set with values (most common)

languages = {"python", "javascript", "sql"}
print(languages)
print(type(languages))

Option B: Create an empty set

seen = set()
print(seen)
print(type(seen))

What to look for: {} creates an empty dictionary, not an empty set.

x = {}
print(type(x))  # <class 'dict'>

If you want an empty set, always use set().


2) Build a set from an existing collection (dedupe)

If you already have a list (or another iterable), convert it with set() to remove duplicates.

raw_tags = ["python", "python", "sql", "api", "sql"]
tags = set(raw_tags)
print(tags)

This works with many iterables, like tuples or strings.

nums = (1, 2, 2, 3)
print(set(nums))  # {1, 2, 3}

You can also convert a string into a set of unique characters:

word = "banana"
print(set(word))  # {'b', 'a', 'n'}

Examples you can copy

Example 1: Remove duplicates from user input

emails = [
    "ana@example.com",
    "marko@example.com",
    "ana@example.com",
    "lea@example.com",
]

unique_emails = set(emails)
print(unique_emails)

Example 2: Declare a set of tuples for coordinates

Tuples are hashable, so they work well in sets.

visited = {(42.43, 19.26), (43.51, 16.44)}
print(visited)

more = [(45.81, 15.98), (42.43, 19.26)]
visited_all = visited | set(more)
print(visited_all)

Example 3: Merge two sets of allowed features

This keeps only distinct values.

base_features = {"search", "export"}
paid_features = {"export", "priority_support", "team_access"}

all_features = base_features | paid_features
print(all_features)

Common mistakes and how to fix them

Mistake 1: Using {} for an empty set

What you might do

items = {}

Why it breaks

{} creates a dictionary, so set behavior and set methods won’t apply.

Fix

items = set()
print(type(items))

Mistake 2: Trying to put a list or dict inside a set

What you might do

bad = {[1, 2, 3]}

Why it breaks

Lists and dictionaries are unhashable, so Python can’t store them inside a set.

Corrected approach

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

Troubleshooting

If you see AttributeError: 'dict' object has no attribute 'add', you declared {}. Replace it with set().

If you see TypeError: unhashable type: 'list', convert inner lists to tuples before placing them in a set:

points = [[1, 2], [3, 4]]
point_set = {tuple(p) for p in points}
print(point_set)

If your set “loses” a value like 1 or True, avoid mixing booleans and integers in the same set. True == 1 and False == 0, so they are treated as duplicates.

If the printed order looks inconsistent, remember that sets are unordered. Sort only when you need display output:

s = {"b", "a", "c"}
print(sorted(s))

Quick recap

  • Declare a set with values using {...}, like {"python", "sql"}
  • Declare an empty set with set(), not {}
  • Convert an iterable to a set with set(iterable) to remove duplicates
  • Use sets when duplicates should disappear, and order does not matter