frozenset Example
This page was last reviewed on Sep 23, 2021.
Dot Net Perls
Frozenset. In Python we have some immutable types. With immutable collections, we can simplify some logic in programs. An immutable thing is frozen in place.
With frozenset, we have an immutable set. We cannot add or remove elements. In every other way it is like a set. And because it cannot be changed, it can be used as a dictionary key.
A simple example. Here is an example that uses the frozenset keyword. We create an immutable set of strings (bird, plant and fish).
Tip A frozenset can be used where a set cannot. It can be a dictionary key or a set element itself.
Tip 2 We initialize a frozenset with the frozenset() built-in. We pass it a list of strings.
# Strings to put in frozenset. keys = ["bird", "plant", "fish"] # Create frozenset. f = frozenset(keys) print(f) # Cannot add to frozenset. try: f.add("cat") except AttributeError: print("Cannot add") # Can use frozenset as key to dictionary. d = {} d[f] = "awesome" print(d)
frozenset({'plant', 'bird', 'fish'}) Cannot add {frozenset({'plant', 'bird', 'fish'}): 'awesome'}
Nested frozensets. Let us try to create a frozenset of frozensets. With sets, this is not possible, but frozensets can be hashed like other values.
Here We create a frozenset that contains possible color pairs (which are stored as frozensets also).
Result We can test the frozenset to see whether a pair of colors exists. This uses hashing.
# Create 3 frozensets. colors1 = frozenset(["blue", "red"]) colors2 = frozenset(["orange", "black"]) colors3 = frozenset(["black", "white"]) # Create a frozenset of two frozensets. possible = frozenset([colors1, colors2]) # This frozenset is included. if colors1 in possible: print("Possible:", colors1) # This one is not. if colors3 not in possible: print("Not possible:", colors3)
Possible: frozenset({'blue', 'red'}) Not possible: frozenset({'white', 'black'})
Unhashable error. A set cannot be hashed. So when we try to create a set of sets we will get an "objects are unhashable" error (a TypeError).
# This example will not compile. example = {1, 2, 3} example2 = {example, {5, 6, 7}}
Traceback (most recent call last): File "C:\programs\file.py", line 6, in <module> example2 = {example, {5, 6, 7}} TypeError: 'set' objects are unhashable
A summary. Here we have an immutable and hashable set. We can test a frozenset for the existence of other pairs—this is a fast way to search for multiple elements.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Sep 23, 2021 (edit).
© 2007-2024 Sam Allen.