A Python set is an unordered, mutable collection of unique, hashable elements written with curly braces {}. Sets automatically drop duplicate values and check membership (x in my_set) in constant O(1) average time.
Use a set whenever you need to deduplicate IDs, compare two groups of tags, or test whether an item belongs to an allowed list thousands of times inside a loop.
You can build a set from a list with set(items) or combine sets using clean math operators: | (union), & (intersection), - (difference), and ^ (symmetric difference).
backend_devs = {"Amina", "Leo", "Tariq", "Amina"}
frontend_devs = {"Leo", "Maya", "Tariq"}
all_devs = backend_devs | frontend_devs
fullstack = backend_devs & frontend_devs
backend_only = backend_devs - frontend_devs
print(fullstack) # {'Leo', 'Tariq'}
print(backend_only) # {'Amina'}
Call .add() to insert one element and .discard() to remove an element without raising an error if it is absent. Calling .remove() raises KeyError when the item is missing.
{} for an empty set: {} creates an empty dict; always call set() for an empty set.my_set[0].in on a set compared to a list?Set lookups run in O(1) average time using hashing, whereas list lookups scan items one by one in O(n) time.
frozenset?A frozenset is an immutable version of a set. Because it cannot change, you can store a frozenset inside another set or as a dictionary key.
Use list(dict.fromkeys(my_list)), because dictionaries preserve insertion order while sets do not.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.