C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Tip: A frozenset can be used where a set cannot. It can be a dictionary key or a set element itself.
DictionaryTip 2: We initialize a frozenset with the frozenset() built-in. We pass it a list of strings.
Python program that uses frozenset
# 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)
Output
frozenset({'plant', 'bird', 'fish'})
Cannot add
{frozenset({'plant', 'bird', 'fish'}): 'awesome'}
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.
InPython program that uses nested frozensets
# 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)
Output
Possible: frozenset({'blue', 'red'})
Not possible: frozenset({'white', 'black'})
Python program that causes unhashable error
# This example will not compile.
example = {1, 2, 3}
example2 = {example, {5, 6, 7}}
Output
Traceback (most recent call last):
File "C:\programs\file.py", line 6, in <module>
example2 = {example, {5, 6, 7}}
TypeError: 'set' objects are unhashable
Quote: The frozenset type is immutable and hashable—its contents cannot be altered after it is created; it can therefore be used as a dictionary key or as an element of another set.
Built-in Types: Python.org