"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como remover com eficiência dicionários duplicados de uma lista Python?

Como remover com eficiência dicionários duplicados de uma lista Python?

Publicado em 2024-11-07
Navegar:873

How to Efficiently Remove Duplicate Dictionaries from a Python List?

Dicionários exclusivos em listas Python

Listas de dicionários são comuns em aplicativos Python. Contudo, gerenciar dicionários duplicados pode ser um desafio. Este artigo discute como remover duplicatas com eficiência e obter uma lista de dicionários exclusivos.

Considere uma lista de dicionários:

L = [
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30}
]

Abordagem do problema

Para desduplicar uma lista de dicionários, uma abordagem direta envolve iterar a lista e comparar cada dicionário com os outros. No entanto, esse processo pode ser computacionalmente caro para listas grandes.

Usando um dicionário temporário

Uma solução mais eficiente utiliza um dicionário temporário para lidar com a desduplicação. A chave do dicionário é definida no campo id de cada dicionário e o valor é definido no próprio dicionário. Esta operação filtra efetivamente duplicatas porque cada ID exclusivo corresponderá a apenas uma entrada de dicionário.

Recuperando dicionários exclusivos

Depois que o dicionário temporário for preenchido, os valores (que representam os dicionários exclusivos) podem ser recuperados usando o métodovalues().

Python Implementation

Python 2.7:

{v['id']:v for v in L}.values()

Python 3:

list({v['id']:v for v in L}.values())
:v para v em L}.values())

Python 2.5/2.6:

dict((v['id'],v) for v in L).values()
dict((v['id' ],v) for v in L).values()

Essas soluções concisas resultam em uma lista de dicionários exclusivos:
dict((v['id'],v) for v in L).values()
[ {'id': 1, 'nome': 'joão', 'idade': 34}, {'id': 2, 'nome': 'hanna', 'idade': 30} ]

Essa abordagem remove duplicatas com eficiência, aproveitando um dicionário temporário para identificar e extrair valores de dicionário exclusivos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3