Criar conjunto ordenado em Python

Muhammad Maisam Abbas 22 outubro 2021
Criar conjunto ordenado em Python

Este tutorial discutirá a classe OrderedSet em Python.

Crie conjuntos ordenados com a classe OrderedSet em Python

Para começar, vamos primeiro definir o que um conjunto significa em Python. É uma coleção bem definida de objetos distintos que estão de alguma forma relacionados. Esta definição não contém nenhuma ordem. Portanto, por definição, um conjunto não tem ordem.

No entanto, se tal cenário surgir em que temos que preservar a ordem original dos elementos do conjunto, podemos usar a classe OrderedSet. Para usar a classe OrderedSet, temos que instalar o ordered-set primeiro em nosso dispositivo com o gerenciador de pacotes Python. O comando para instalar o pacote ordered-set é fornecido a seguir.

pip install ordered-set

Agora, podemos criar um conjunto que preserva a ordem de cada elemento do conjunto. Esse processo é demonstrado no programa a seguir.

from ordered_set import OrderedSet

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

Produção:

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

Criamos um conjunto ordenado e exibimos o valor em cada índice em ordem com a classe OrderedSet no código acima. Este OrderedSet é uma estrutura de dados mutável que é um híbrido entre a lista e as estruturas de dados do conjunto. Portanto, temos que inicializar este conjunto com uma lista; desta forma, o conjunto mantém o índice de cada elemento.

Para simplificar a indexação, a função add() retorna o índice do novo elemento adicionado ao conjunto; isso é mostrado no seguinte processo abaixo.

print(setABC.add("D"))

Produção:

3

Adicionamos outro elemento ao nosso setABC e exibimos o valor retornado pela função add() no código acima. Também podemos obter o índice de um elemento específico com a função index(); isso é mostrado no seguinte trecho de código.

print(setABC.index("C"))

Produção:

2

Recuperamos o índice do elemento C dentro de setABC definido com a função index() no código acima. Também podemos realizar as operações usuais de conjuntos como união, interseção e diferença nesses conjuntos ordenados com os operadores |, & e -, respectivamente.

O exemplo de código a seguir demonstra como podemos realizar a união em um conjunto ordenado.

from ordered_set import OrderedSet

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

Produção:

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

Calculamos a união dos conjuntos setABC e setDEF com o operador de união | no código acima. O programa a seguir abaixo nos mostra como podemos realizar a interseção em um conjunto ordenado.

from ordered_set import OrderedSet

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

Produção:

OrderedSet(['D'])

Calculamos a interseção dos conjuntos setABC e setDEF com o operador de interseção & no código acima. O seguinte exemplo de código abaixo nos mostra como podemos calcular a diferença entre dois conjuntos ordenados.

from ordered_set import OrderedSet

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

Produção:

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

Calculamos a diferença dos conjuntos setABC e setDEF com o operador de diferença - no código acima.

Por padrão, Python não oferece suporte a conjuntos ordenados. Ainda assim, podemos instalar um pacote externo, ordered-set, que nos dá a funcionalidade de criar conjuntos ordenados. Este processo é compatível com Python versão 2.6 e superior.

Esses conjuntos ordenados são um híbrido das listas e conjuntos originais em Python. Portanto, temos que inicializar esses conjuntos com uma lista. Esses novos conjuntos nos fornecem todas as funcionalidades usuais de conjuntos, como união, interseção e diferença.

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

Artigo relacionado - Python Set