The frozenset class in Python

Overview:

A set in Python represents the mathematical concept of sets. Python provides two types of set implementations: A set and a frozenset. Sets are mutable sequences. A value can be added to a set containing the values {"Red", "Green"} and the set grows into {"Red", "Green", "Blue"}

The frozenset is also a set, however a frozenset is immutable. Once a frozenset is created, new elements cannot be added to it. A frozenset with value {128, 150, 175} once created, cannot be added with new elements. The elements of a frozenset object cannot change their values.

Hashable Property of frozenset:

A frozenset is hashable, meaning every time a frozenset instance is hashed, the same hash value is returned. The hashable property of the frozenset makes it qualified to be a key in a Python dictionary. The hashable property of the frozenset also makes two frozenset objects to be compared for equality.

Creating frozenset objects in Python:

The constructor of a frozenset takes an iterable object and returns a frozenset instance. In case if no iterable object is passed, the constructor returns an empty frozenset. In both the cases the returned frozenset is immutable.

Applications of frozensets:

Applications of frozensets include set of sets and dictionaries where the keys are required to be pairs or triples.

 

frozenset used along with dict in Python

Frozenset operations:

Since frozenset objects are immutable, the following set methods are not supported by frozenset: update(), intersection_update(), symmetric_difference_update() ,add(), remove(), discard(), pop(), clear(). The following set operators are also not allowed on a frozenset object: |=, &=, -=, ^=.

Example 1:

# Sample Python program for frozenset

singleDigitPrimes   = (2,3,5,7)

 

# Single digit prime numbers as a Python frozenset

singleDigitPrimeSet = frozenset(singleDigitPrimes)

 

# Prime numbers less than ten as a Python frozenset

primeLTTen          = frozenset((2,3,5,7))

 

# Prime numbers less than twenty as a Python frozenset

primeLTTwenty       = frozenset((2,3,5,7,11,13,17,19))

 

# Check the single digit prime number set

# and the prime number set less than ten are same

print("Single digit prime number set is equal to prime number set of numbers less than the integer ten:%s"%(primeLTTen == singleDigitPrimeSet))

 

# Check the single digit prime number set

# and the prime number set less than twenty are same

print("Single digit prime number set is equal to prime number set of numbers less than the integer twenty:%s"%(primeLTTwenty == singleDigitPrimeSet))

 

# Are the prime numbers less than ten and the prime numbers less than twenty are disjoint

print("Prime numbers less than ten and the prime numbers less than twenty are disjoint:%s"%(primeLTTen.isdisjoint(primeLTTwenty)))

Output:

Single digit prime number set is equal to prime number set of numbers less than the integer ten:True

Single digit prime number set is equal to prime number set of numbers less than the integer twenty:False

Prime numbers less than ten and the prime numbers less than twenty are disjoint:False

Example 2:

This example Python program shows how a frozenset can be used along with a Python dictionary instance. A set of latitude and longitude values are added as keys of a dictionary instance. The values against the keys are the strings of city names while they could be any complex object. This is possible as the frozenset instances are immutable and hashable.

# Example Python program using frozenset as keys of a dictionary

# City1

latitude1 = 40

longitude1     = 74

 

latLong1 = (latitude1, longitude1)

cityName1 = "NewYork"

 

# City2

latitude2 = 41

longitude2     = 87

 

latLong2 = (latitude2, longitude2)

cityName2 = "Chicago"

 

# City3

latitude3 = 37

longitude3     = 122

 

latLong3 = (latitude3, longitude3)

cityName3 = "San Francisco"

 

# Create a Python dictionary

cityCollection = dict()

 

# With key as a frozenset instance of latitude and longitude

# add cities to the dictionary

cityCollection[latLong1] = cityName1

cityCollection[latLong2] = cityName2

cityCollection[latLong3] = cityName3

 

# Print the dictionary

print("Cities by latitude and longitude:")

print(cityCollection)

Output:

Cities by latitude and longitude:

{(40, 74): 'NewYork', (41, 87): 'Chicago', (37, 122): 'San Francisco'}

 

 


Copyright 2025 © pythontic.com