Remover duplicatas da lista em Python

Sahil Bhosale 30 janeiro 2023
  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
Remover duplicatas da lista 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 collections em Python from collections 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]
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Artigo relacionado - Python List