Crear un conjunto de conjuntos en Python
Como programador, uno debe tener un buen conocimiento de las estructuras de datos. Hay muchas estructuras de datos en informática, de las cuales los arrays y conjuntos son muy fáciles de entender. Dado que este artículo no trata sobre estructuras de datos, no profundizaremos en ellas, sino que hablaremos específicamente de Conjuntos.
En Python, podemos crear un array de matrices o una lista de listas. Sin embargo, esto no es cierto para los conjuntos. No podemos crear un conjunto de conjuntos en Python. ¿No crees eso? Prueba el siguiente código.
print({{1, 2}, {2, 3}})
El código anterior arrojará un error, que es el siguiente.
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: unhashable type: 'set'
Dado que los conjuntos son mutables, no se pueden aplicar hash. Dado que un conjunto necesita valores hash para mantener la unicidad y rechazar valores duplicados, no podemos crear un conjunto de conjuntos de esta manera. En cambio, tenemos que seguir algunos enfoques diferentes.
Mutable significa que el contenido de la estructura de datos se puede alterar, mientras que inmutable significa que el contenido de la estructura de datos no se puede alterar. Algunos ejemplos de estructuras de datos mutables son listas
, conjuntos
y diccionarios
. Y, algunos ejemplos de estructuras de datos inmutables son cadenas
, frozenset
y tuplas
.
Hash significa que la estructura de datos se puede representar como una cadena única dentro de la memoria, mientras que unhashable significa que la estructura de datos no se puede representar como una cadena única dentro de la memoria.
Crear un conjunto de conjuntos usando frozenset
en Python
frozenset
es un tipo de conjunto preconstruido en Python. Un frozenset
y un set
realizan la misma función: almacenar valores únicos y rechazar los valores duplicados que se les agregan. Sin embargo, un frozenset
es inmutable y se puede combinar, mientras que un conjunto es mutable y no se puede modificar. Dado que un frozenset
es inmutable, puede usarse como una clave dentro de un diccionario y almacenarse dentro de un set
, porque un set
solo puede almacenar valores inmutables. Entendamos esto mejor con algo de código Python.
a = set([frozenset([1, 2]), frozenset([2, 3]), frozenset([3, 4])])
print(a)
El resultado del código anterior es el siguiente.
{frozenset({3, 4}), frozenset({2, 3}), frozenset({1, 2})}
Para obtener más información sobre frozenset
, consulte la documentación oficial de Python aquí.