Como remover duplicatas de uma lista em Python

Aprenda como remover duplicatas de uma lista em Python enquanto mantém ou ignora a ordem. Compare conversões de conjunto, chaves de ditado e métodos de loop.

Experimente esta solução no Editor

Visão geral

Dados duplicados frequentemente aparecem em listas por meio de buscas de banco de dados, interações de usuários ou agregações de log. A remoção dessas duplicatas é uma etapa fundamental de limpeza de dados que garante exclusividade e evita redundância na lógica downstream. Python fornece várias técnicas para conseguir isso, desde conversões rápidas de conjuntos até operações baseadas em loop que respeitam a ordem dos elementos.

A maneira mais rápida e comum de eliminar elementos duplicados é converter a lista em um `set` usando o construtor `set()` e depois convertê-la novamente em uma lista. Como os conjuntos não podem conter valores duplicados, esse processo descarta automaticamente as duplicatas. A desvantagem desta abordagem é que os conjuntos não são ordenados, o que significa que a sequência original de elementos é perdida.

Para preservar a ordem original dos elementos enquanto remove duplicatas,Python 3.7+ oferece uma solução inteligente usando a classe de dicionário integrada: `list(dict.fromkeys(my_list))`. Como as chaves do dicionário são exclusivas e preservam a ordem de inserção, esse método desduplica efetivamente os elementos, mantendo a sequência intacta. Para critérios personalizados ou versões mais antigas do Python, um loop manual usando um conjunto auxiliar para rastrear elementos vistos também é altamente eficaz.

Saída de código e execução

Este script demonstra a desduplicação de elementos de lista usando conjuntos, chaves de dicionário e loops manuais.

deduplicate_list.py
Experimente no Editor
numbers = [2, 1, 2, 3, 1, 4]

# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)

# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)

# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
    if item not in seen:
        seen.add(item)
        unique_loop.append(item)
print("Loop unique:", unique_loop)
Saída terminal
Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]

Implementação passo a passo

  • Converta a lista em um conjunto para remover duplicatas instantaneamente usando set(my_list).
  • Use list(dict.fromkeys(my_list)) para remover duplicatas enquanto preserva a ordem de inserção.
  • Use um conjunto auxiliar em um loop para filtrar duplicatas se precisar de validação personalizada.

Perguntas frequentes

Qual método é o mais rápido para listas grandes?

A conversão para um conjunto é a mais rápida devido às otimizações de nível C, seguida de perto por dict.fromkeys().

Como desduplicar uma lista de dicionários?

Como os dicionários não podem ser hash, você não pode usar conjuntos diretamente. Você deve usar um loop ou filtragem de compreensão de lista por IDs/chaves exclusivos.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.