Sets

A set is Python's collection of unique items. Drop duplicates in and they silently disappear; ask "is this here?" and you get an answer almost instantly. Sets are the right tool whenever uniqueness or fast membership matters.

Learn Sets in our free Python course — a beginner-friendly interactive lesson with runnable examples, a practice exercise and a quick recall.

Part of the free Python course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.

They also bring the elegant math of unions, intersections, and differences — perfect for comparing two groups of things.

Write a set with curly braces and commas, or build one from any iterable with set() . Duplicates are removed on the spot:

The single biggest reason to use a set is speed. Checking x in some_set is roughly constant time no matter how big the set is, while the same check on a list scans every element:

If your program repeatedly asks "have I seen this before?" or "is this in the allowed list?", store the values in a set. For a large collection the difference is the gap between instant and noticeably slow.

Sets are mutable — you can change their contents (even though the elements must be immutable):

This is where sets shine. Comparing two groups of things becomes a single, readable operation:

One of the most common real uses of a set is to remove duplicates from a list in a single line:

list(set(items)) is the quick way, but it scrambles order. The "seen" pattern is the standard idiom when you need uniqueness and the original ordering.

These lines should find how many tags two articles share. Reorder them so the final output is Shared tags: 2 .

Why: both sets a (B) and b (D) must exist before the intersection a & b (A) can run. The print (C) reports the size of that result. The two common tags are web and api .

3 — sets discard duplicates, leaving only {' '} , which has length 3.

{' '} — the & operator returns the intersection: only the elements present in both sets.

<class 'dict'> — empty curly braces make a dictionary, not a set. Use set() for an empty set.

Given two people's friend lists, find mutual friends and friend suggestions.

Lesson complete — sets are in your toolkit!

You can create sets, de-duplicate data, run instant membership tests, add and remove items, and use union, intersection, and difference to compare groups. Remember: set() for empty, not {' '} .

🚀 Up next: Tuples — the immutable, fixed sibling of the list.

Practice quiz

What is the defining feature of a Python set?

  • It keeps items sorted
  • It allows duplicates
  • It stores only unique items
  • It is indexed by position

Answer: It stores only unique items. A set is an unordered collection that automatically removes duplicates.

What does len({1, 2, 2, 3, 3, 3}) return?

  • 3
  • 6
  • 1
  • 2

Answer: 3. Duplicates are discarded, leaving {1, 2, 3}, which has length 3.

How do you create an EMPTY set?

  • {}

{} creates an empty dict; use set() for an empty set.

What does {1, 2, 3} & {2, 3, 4} produce?

  • {1, 2, 3, 4}
  • {2, 3}
  • {1, 4}
  • {1}

Answer: {2, 3}. The & operator is intersection: only items in both sets, {2, 3}.

Which operator gives the UNION of two sets?

  • |
  • &
  • -
  • ^

Answer: |. The | operator returns the union — all items from both sets.

What does a - b compute for two sets?

  • Items in both
  • Items in either
  • Items in a but not b
  • Items in neither

Answer: Items in a but not b. The - operator is the difference: items in a that aren't in b.

Why is 'x in my_set' faster than 'x in my_list' for large data?

  • Sets are sorted
  • Sets use a hash table (O(1) lookup)
  • Lists are immutable
  • Sets are smaller

Answer: Sets use a hash table (O(1) lookup). Sets are hash-table backed, giving roughly O(1) membership tests vs O(n) for lists.

What's the difference between remove() and discard()?

  • No difference
  • discard() raises KeyError, remove() does not
  • remove() adds items
  • remove() raises KeyError if missing, discard() does not

Answer: remove() raises KeyError if missing, discard() does not. remove() raises a KeyError when the item is absent; discard() is silent.

What is type({}) in Python?

  • set
  • dict
  • list
  • tuple

Answer: dict. Empty curly braces create a dictionary, not a set.

Which one-liner removes duplicates from a list called items?

  • sorted(items)
  • items.unique()
  • list(set(items))
  • set.remove(items)

Answer: list(set(items)). list(set(items)) dedupes by converting to a set and back (order not preserved).