DEV Community is a community of 643,323 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

#Day4 - Sets and Frozensets in Python

Rahul Banerjee
Originally published at realpythonproject.com γ»2 min read

Sets and Frozen Sets are built-in data types in Python. Both of them are unordered datatypes used to store distinct elements. If you have worked with a different programming language, you might be familiar with Set. However, Frozen Sets are not so common and unique to Python. The biggest advantage of a set and frozen set are the fact that they have a lookup time of O(1).

Frozen Sets are built on top of Sets and as a result, they have many similarities.

A quick summary of their similarities and differences, all of them are discussed.
Similarities

• Both contain distinct elements only
• Traversing
• Lookup
• Both can contain Hashable elements only
• Intersection, Union, and Difference

Differences

• Creation
• A Frozen set is hashable and mutable while a Set is not hashable and immutable
• A Frozen set can be used as a key in a dictionary

Creation

To create a set or a frozen set, all we need is iterable. It will only store the distinct elements.

Treversing a Set/Frozen Set

Both support ** for......in** and can be traversed.

Lookup

Both sets and frozen sets can only store hashable elements. You can not create a set of lists since a list is not hashable. Since sets and frozen sets only contain hashable elements, each element has a hash value associated with it. As a result, using the in operator takes O(1) time. Since they are unordered, both of them do not support indexing

Intersection, Union and Difference in Sets/Frozen Sets

• Intersection : & (and)
• Union : | (pipe)
• Difference: - (subtraction)

Mutability

A set is mutable while a frozen set is not. This basically means that a set can be updated after it's created but a frozen set can not. Once a frozen set is created, the elements inside it are frozen.

Hashability

A frozen set is hashable, i.e it can have a hash value. On the other hand, a set is not hashable. As a result of this, a frozen set can be used as a key for a dictionary but a set can not be used.

Summary

• Both Frozen Sets and Sets have O(1) lookup time
• Neither of them supports indexing
• Both can be traversed using for.....in
• A set can be updated after creation but a frozen set can not be updated
• Only Frozen Sets are hashable and can be used as dictionary keys