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. 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