Remover itens duplicados de lista em Python
Neste artigo você vai aprender a como remover itens duplicados de lista em Python, de uma maneira super simples e intuitiva
Pra remover itens duplicados de uma lista em Python, converta a lista em set e volte pra lista: lista_unica = list(set(lista))
O set é uma coleção não ordenada de elementos distintos e hashable, então ele elimina as repetições, mas não garante a ordem original (remover duplicatas de uma sequência é, inclusive, um dos usos documentados do tipo set)
Se a ordem importa, use list(dict.fromkeys(lista)): o dict.fromkeys monta um dicionário usando os itens como chaves, e desde o Python 3.7 os dicionários preservam a ordem de inserção por especificação da linguagem
Se tu só quer o resultado ordenado, use sorted(set(lista))

Fala programador(a), beleza? Bora aprender mais sobre os dados de lista e também sobre a linguagem Python!
Para remover a duplicidade de elementos em um lista vamos utilizar a função set, que tem exatamente esta premissa
Entregar uma lista de dados apenas com valores únicos, o problema é que o retorno de set é um dicionário
Ou seja, teremos uma alteração no tipo de dado, e isso talvez não seja interessante
Então vamos utilizar a função list neste set, que transforma o dicionário em uma lista e aí resolveremos todos os nossos problemas
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Veja um exemplo prático da implementação de set:
lista = [1, 1, 2, 3, 3, 4, 5, 5] lista_unica = list(set(lista)) print(lista_unica) # [1, 2, 3, 4, 5]
Temos primeiramente uma lista que contém valores duplicados, na variável lista
Então na segunda lista de código colocamos esta lista como argumento de set, que vai deixar os valores únicos
E também inserimos este resultado no método list, o que gera uma lista a partir do resultado de set
Como é possível conferir no print, temos uma lista apenas com valores únicos como resultado!
Conclusão
Neste artigo você aprendeu a como remover itens duplicados de lista, na linguagem Python
Utilizamos a função set em conjunto da função list
Como explicado anteriormente, set entrega um dicionário apenas com valores únicos e list transforma o dicionário em lista =)
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!
Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias
O link acima contém um cupom de desconto para os cursos!
Bloco de resposta direta (o texto de geo.respostaDireta), sem subtítulo, em linhas curtas, funcionando como resumo extraível no topo do post
E a ordem da lista? Se liga nisso:
O set é uma coleção não ordenada de elementos distintos, isso está na própria documentação do Python
Ou seja: ele garante que não sobra repetição, mas não promete devolver os valores na mesma ordem em que eles estavam na lista original
Então não escreve código contando com uma ordem que ninguém te prometeu
Se a ordem crescente resolve pra ti, joga um sorted() em volta:
lista_unica = sorted(set(lista))
print(lista_unica)
Agora sim tu tem controle do que sai 🙂
Como remover duplicados e manter a ordem original:
E se tu não quer ordenar, quer exatamente a ordem em que os itens apareceram na lista? Aí o caminho é outro: dict.fromkeys()
Ele cria um dicionário novo usando os itens do iterável como chaves (o valor padrão de cada uma é None)
E chave de dicionário não repete, então a duplicata morre ali mesmo
O detalhe que faz a mágica funcionar: desde o Python 3.7, a preservação da ordem de inserção dos dicionários é parte oficial da especificação da linguagem
lista_unica = list(dict.fromkeys(linguagens))
Cada item entra na ordem da primeira aparição e as repetições seguintes são ignoradas, mto massa né?
Isso funciona em qual versão do Python?
Hoje as séries que ainda recebem atualização são a 3.10, 3.11, 3.12, 3.13 e 3.14 (a 3.9 e anteriores já chegaram ao fim de vida)
A versão estável mais recente é a 3.14.7
Como a ordem do dicionário virou especificação lá no 3.7, o list(dict.fromkeys(lista)) é seguro em qualquer versão que ainda tenha suporte hoje
TypeError: unhashable type: ‘list’? Calma:
Caso este erro apareça, não é bug teu, é regra do tipo
Os elementos de um set precisam ser hashable, e isso não é opcional
Então se tu tentar tirar duplicata de uma lista que tem listas dentro, o Python levanta TypeError na tua cara:
list(set(lista)) # TypeError: unhashable type: 'list'
Com valores simples, tipo números e strings, tu segue tranquilo
Com estruturas mutáveis dentro da lista, o set não resolve direto, e vale saber disso ANTES de rodar o código em produção
set() ou {}? Não confunde:
Dá pra criar conjunto com chaves, tipo {1, 2, 3}, e também com a função set()
Mas pra criar um conjunto VAZIO só existe um jeito: set()
Porque {} sozinho cria um dicionário vazio, não um conjunto
vazio = set() # conjunto vazio
nao_e_set = {} # dicionário vazio
É daqui que vem boa parte da confusão entre set e dicionário, beleza?
Seção "## Perguntas frequentes:" com os pares de pergunta e resposta do bloco geo.faq, cada pergunta como H3
Bloco de primeira mão (texto de geo.primeiraMao), com o link para o vídeo do canal sobre remover elemento de lista em Python
Um aviso de quem já gravou vídeo aqui no canal sobre remover elemento de lista em Python: não confunde os dois problemas
Lá eu mostro o pop(), que sem argumento nenhum tira o último elemento da lista, e com um índice (pop(2), por exemplo) tira o elemento daquela posição
E o detalhe que eu bato na tecla no vídeo: o pop mexe na estrutura original, tu não precisa atribuir o retorno dele pra lista mudar
Então se tu quer manter uma cópia do dado original, guarda ela em outra variável ANTES, senão já era
Tome cuidado com isso, porque é erro fácil de cometer no meio de um script grande
Aqui no post é outra história: set e dict.fromkeys agem na lista inteira, tirando repetição, não posição
Se quiser ver o pop rodando na prática, o vídeo está lá no canal =)
Perguntas frequentes
Como remover itens duplicados de uma lista em Python?
Converta a lista em set e depois de volta em lista: lista_unica = list(set(lista))
O set é uma coleção de elementos distintos, então as repetições somem sozinhas, e remover duplicatas de uma sequência é um dos usos documentados desse tipo
list(set(lista)) mantém a ordem original da lista?
Não
O set é uma coleção NÃO ordenada, então a ordem da saída não é garantida
Se tu precisa de ordem crescente, use sorted(set(lista)); se precisa da ordem em que os itens apareceram, use list(dict.fromkeys(lista))
Como tirar duplicados de uma lista sem perder a ordem?
Com list(dict.fromkeys(lista))
O dict.fromkeys cria um dicionário novo a partir das chaves de um iterável (com valor padrão None), e chave de dicionário não repete
Como a preservação da ordem de inserção dos dicionários virou parte oficial da especificação da linguagem no Python 3.7, cada item fica na posição da primeira aparição
A função set() retorna um dicionário?
Não
Ela devolve um objeto do tipo set, um conjunto: coleção não ordenada de elementos distintos e hashable
A confusão costuma vir das chaves: {} sozinho cria um dicionário vazio, enquanto set() cria um conjunto vazio
Por que aparece TypeError: unhashable type: ‘list’?
Porque os elementos de um set precisam ser hashable
Se a tua lista tem listas dentro, o Python não consegue hashear esses valores e levanta TypeError
Com valores simples, como números e strings, o list(set(lista)) roda numa boa
Como criar um conjunto vazio em Python?
Com set()
Esse é o único jeito, porque {} cria um dicionário vazio
Em quais versões do Python isso funciona?
Nas versões que ainda recebem atualização hoje: 3.10, 3.11, 3.12, 3.13 e 3.14 (a 3.9 e anteriores já chegaram ao fim de vida)
A versão estável mais recente é a 3.14.7
Como a ordem do dicionário virou especificação no 3.7, o truque do dict.fromkeys é seguro em todas elas
Qual a diferença entre remover duplicados e remover um elemento da lista?
São problemas diferentes
Remover duplicados age na lista inteira, tirando as repetições (set ou dict.fromkeys)
Remover um elemento age em UM item específico, normalmente pela posição, com o método pop(), que altera a lista original
Leia também
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]

Uma coisa interessante a se notar, é que esse tipo de remoção de item duplicado altera a ordem da lista, então por exemplo, se eu fizer
list= [ 3,3,2,2,5,5,4,4,1,1]
quando executar esse set para remover duplicatas ficará
newlist=[1,2,3,4,5]
Então tomem cuidado!!
obrigado pela contribuição Breno!
Uma outra solução seria contar as ocorrencias em uma lista limitada usei o for e deu certo segue abaixo:
wordlist = [“www”, “www”, “ftp”, “ftpquote”, “ftp”, “passw”, “senha”, “user”]
for c in (wordlist):
if wordlist.count(c) > 1:
wordlist.remove(c)
print(wordlist)