Frozenset
Los frozenset en Python son una estructura de datos muy similar a los set, con la salvedad de que son inmutables, es decir, no pueden ser modificados una vez declarados.
Crear frozenset Python
Los frozensets
en Python son un tipo muy parecido a los sets con la salvedad de que son inmutables, es decir, están congelados y no pueden ser modificados una vez inicializados.
fs = frozenset([1, 2, 3])
print(fs) #frozenset({1, 2, 3})
print(type(fs)) #<class 'frozenset'>
Ejemplos frozenset
Dado que son inmutables, cualquier intento de modificación con los métodos que ya hemos visto en otros capítulos como add()
o clear()
dará un error, ya que los frozenset
no disponen de esos métodos.
fs = frozenset([1, 2, 3])
#fs.add(4) #Error! AttributeError
#fs.clear() #Error! AttributeError
Los frozenset
pueden ser útiles cuando queremos usar un set
pero se requiere que el tipo sea inmutable. Algo no muy común, pero que podría darse, es crear un set de sets. Es decir, un ser que contiene como elementos a otros sets. El siguiente código daría un TypeError
ya que los elementos de un set
deben ser por definición inmutables.
s1 = {1, 2}
s2 = {3, 4}
#s3 = {s1, s2} # Error! TypeError
Para resolver este problema, podemos crear un set de frozensets. Esto si es posible ya que el frozenset
es un tipo inmutable.
s1 = frozenset([1, 2])
s2 = frozenset([3, 4])
s3 = {s1, s2}
print(s3) #{frozenset({3, 4}), frozenset({1, 2})}
Lo mismo aplica a los diccionarios, ya que su key
debe ser un tipo inmutable. Si intentamos crear un diccionario con set
como key
, obtendremos un TypeError
.
s1 = set([1, 2])
s2 = set([3, 4])
#d = {s1: "Texto1", s2: "Texto2"} # Error! TypeError
Pero si podemos crear un diccionario donde sus key
son frozenset
, ya que son un tipo inmutable.
s1 = frozenset([1, 2])
s2 = frozenset([3, 4])
d = {s1: "Texto1", s2: "Texto2"}
print(d) #{frozenset({1, 2}): 'Texto1', frozenset({3, 4}): 'Texto2'}
Tal vez te interese leer acerca de otras estructuras de datos similares como los sets o las listas.