Removendo itens duplicados de uma lista de dicionários. (Python)

Neste post, mostro como remover itens duplicados de uma lista de dicionários de duas formas.

Antes de começar, é bom lembrar que o Python considera dois dicionários como iguais se eles possuírem as mesmas propriedades e os mesmos valores, independente da ordem das propriedades.

Exemplo:

 

Para as duas formas, considere a variável e a lista abaixo:

Nesta lista, os dois primeiros itens são iguais e o último é diferente.

 

Forma 1: Básica.

O que acontece no código acima é o seguinte:

  1. Criei uma lista que vai receber os dicionários únicos (unique_list).
  2. Para preencher esta lista, faço um loop com a quantidade de elementos que existem na lista geral com os elementos (for i in range(len(list_with_duplicates)):)
    1. Também seria possível utilizar o enumerate(list_with_duplicates).
  3. Dentro deste loop, verifico que se o elemento atual (list_with_duplicates[i]) não está dentro da lista a partir da posição adjacente (not in list_with_duplicates[i + 1:]).
  4. Se não estiver, então o valor é único e eu o adiciono na lista unique_list.

 

Forma 2: Usando list comprehension

Nesta segunda forma, fiz exatamente a mesma coisa da primeira forma, mas utilizando list comprehension.

  1. i for n, i in enumerate(list_with_duplicates): Neste pedaço do código, a variável n indica o índice do elemento que está sendo utilizado, enquanto i representa o item em si.
  2. if i not in list_with_duplicates[n + 1:]: Agora verificamos se o item sendo analisado existe nas posições adjacentes da lista.

 

Criei um arquivo no meu Github com este exemplo.

 

 

Espero ter ajudado!

 

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, Python and tagged , , , , .