Crear conjunto ordenado en Python

Muhammad Maisam Abbas 10 octubre 2023
Crear conjunto ordenado en Python

Este tutorial discutirá la clase OrderedSet en Python.

Crear conjuntos ordenados con la clase OrderedSet en Python

Para empezar, primero definamos qué significa un conjunto en Python. Es una colección bien definida de objetos distintos que están relacionados de alguna manera. Esta definición no contiene ningún orden. Entonces, por definición, un conjunto no tiene orden.

Sin embargo, si surge un escenario como el que tenemos que preservar el orden original de los elementos del conjunto, podemos usar la clase OrderedSet. Para usar la clase OrderedSet, primero tenemos que instalar el paquete ordered-set en nuestro dispositivo con el administrador de paquetes Python. El comando para instalar el paquete ordered-set se da a continuación.

pip install ordered-set

Ahora, podemos crear un conjunto que conserve el orden de cada elemento del conjunto. Este proceso se demuestra en el siguiente programa.

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C"])
print(setABC)

Producción :

OrderedSet(['A', 'B', 'C'])

Creamos un conjunto ordenado y mostramos el valor en cada índice en orden con la clase OrderedSet en el código anterior. Este OrderedSet es una estructura de datos mutable que es un híbrido entre la lista y las estructuras de datos del conjunto. Entonces, tenemos que inicializar este conjunto con una lista; de esta forma, el conjunto conserva el índice de cada elemento.

Para simplificar la indexación, la función add() devuelve el índice del nuevo elemento añadido al conjunto; esto se muestra en el siguiente proceso a continuación.

print(setABC.add("D"))

Producción :

3

Agregamos otro elemento a nuestro setABC y mostramos el valor devuelto por la función add() en el código anterior. También podemos obtener el índice de un elemento específico con la función index(); esto se muestra en el siguiente fragmento de código.

print(setABC.index("C"))

Producción :

2

Recuperamos el índice del elemento C dentro del conjunto setABC con la función index() en el código anterior. También podemos realizar las operaciones habituales de conjuntos como unión, intersección y diferencia en estos conjuntos ordenados con los operadores |, & y -, respectivamente.

El siguiente ejemplo de código demuestra cómo podemos realizar la unión en un conjunto ordenado.

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC | setDEF
print(solutionSet)

Producción :

OrderedSet(['A', 'B', 'C', 'D', 'E', 'F', 'G'])

Calculamos la unión de los conjuntos setABC y setDEF con el operador de unión | en el código anterior. El siguiente programa a continuación nos muestra cómo podemos realizar la intersección en un conjunto ordenado.

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC & setDEF
print(solutionSet)

Producción :

OrderedSet(['D'])

Calculamos la intersección de los conjuntos setABC y setDEF con el operador de intersección & en el código anterior. El siguiente ejemplo de código a continuación nos muestra cómo podemos calcular la diferencia entre dos conjuntos ordenados.

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC - setDEF
print(solutionSet)

Producción :

OrderedSet(['A', 'B', 'C'])

Calculamos la diferencia de los conjuntos setABC y setDEF con el operador de diferencia - en el código anterior.

De forma predeterminada, Python no admite conjuntos ordenados. Aún así, podemos instalar un paquete externo, ordered-set, que nos da la funcionalidad de crear conjuntos ordenados. Este proceso es compatible con Python versión 2.6 y superior.

Estos conjuntos ordenados son un híbrido de las listas y conjuntos originales en Python. Entonces, tenemos que inicializar estos conjuntos con una lista. Estos nuevos conjuntos nos proporcionan todas las funcionalidades habituales de conjuntos como unión, intersección y diferencia.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Python Set