Remover duplicatas da lista em Python

  1. Remova a duplicata de uma lista usando a função set() em Python
  2. Remova duplicatas e mantenha a ordem em uma lista usando OrderDict em Python

Uma Lista em Python é uma estrutura de dados usada para armazenar dados em uma ordem específica. A lista pode armazenar dados de vários tipos, ou seja, int, float, string, outra lista, etc. As listas são mutáveis, o que significa que os valores uma vez criados podem ser alterados posteriormente. É representado por colchetes [].

myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
print(myList)

Resultado:

[2, 1, 2, 3, 0, 6, 7, 6, 4, 8]

Você pode remover elementos duplicados da lista acima usando um loop for conforme mostrado abaixo.

myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]

resultantList = []
 
for element in myList:
    if element not in resultantList:
        resultantList.append(element)

print(resultantList)

Resultado:

[2, 1, 3, 0, 6, 7, 4, 8]

Se você não quiser escrever tanto código, existem duas maneiras mais populares de remover elementos duplicados de uma Lista em Python.

  1. Se você não quiser manter a ordem dos elementos dentro de uma lista após remover os elementos duplicados, você pode usar uma estrutura de dados Set.
  2. Se você deseja manter a ordem dos elementos dentro de uma lista após remover os elementos duplicados, você pode usar algo chamado OrderedDict.

Remova a duplicata de uma lista usando a função set() em Python

Para remover duplicatas de uma lista, podemos usar outra estrutura de dados chamada Set. Um conjunto é um tipo de dados não ordenado que contém apenas valores exclusivos. A ordem em que o conjunto armazena os valores é diferente da ordem em que você inseriu os elementos em um conjunto. Os conjuntos são representados usando chaves {}.

Portanto, sempre que você imprimir os elementos armazenados dentro do conjunto, a ordem de saída será diferente. Essa é a razão pela qual a indexação não pode ser executada em um conjunto porque ele está desordenado.

mySet = {80, 10, 50, 18, 3, 50, 8, 18, 9, 8}
print(mySet)

Resultado:

{3, 8, 9, 10, 80, 18, 50}

Observe como a ordem dos elementos mudou depois de imprimi-los.

Em um conjunto, nenhuma duplicata é permitida, o que significa que se você tiver o mesmo elemento várias vezes, o conjunto o considerará como um elemento. Essa é a razão pela qual usamos um conjunto para remover elementos duplicados de uma lista em Python.

original_list = [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]

print("Original List is: ",original_list)

convert_list_to_set = set(original_list)
print("Set is: ",convert_list_to_set)

new_list = list(convert_list_to_set)
print("Resultant List is: ",new_list)

original_list = list(convert_list_to_set)
print("Removed duplicates from original list: ",original_list)

Resultado:

Original List is:  [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
Set is:  {3, 8, 9, 10, 80, 18, 50}
Resultant List is:  [3, 8, 9, 10, 80, 18, 50]
Removed duplicates from original list:  [3, 8, 9, 10, 80, 18, 50]

Convertemos uma lista em um conjunto aplicando a função set(). Em seguida, convertemos o conjunto convertido, que removeu as duplicatas, em uma lista aplicando a função list().

Remova duplicatas e mantenha a ordem em uma lista usando OrderDict em Python

O problema de usar um conjunto para remover elementos duplicados é que ele não armazena elementos em uma ordem específica. Portanto, se você não se importa com a ordem em que os elementos são armazenados na lista resultante, ou seja, a lista que você criou após remover duplicatas, então, nesse caso, você pode ir com a estrutura de dados Set.

Mas se você quiser manter a ordem dos elementos dentro de uma lista após remover as duplicatas, então você pode usar OrderedDict em Python. O OrderDict preserva a ordem em que os elementos foram inseridos na lista. Para usar OrderDict, você primeiro deve importá-lo do módulo coleções em Python das coleções import OrderedDict.

from collections import OrderedDict

myList = [2, 1, 2, 3, 0, 6, 7, 6, 8, 0, 4, 8]

final_list = list(OrderedDict.fromkeys(myList))

print(final_list)

Resultado:

[2, 1, 3, 0, 6, 7, 8, 4]

Artigo relacionado - Python List

  • Listar interseção em Python
  • Copiar lista em Python