"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo eliminar eficazmente diccionarios duplicados de una lista de Python?

¿Cómo eliminar eficazmente diccionarios duplicados de una lista de Python?

Publicado el 2024-11-07
Navegar:795

How to Efficiently Remove Duplicate Dictionaries from a Python List?

Diccionarios únicos en listas de Python

Las listas de diccionarios son comunes en las aplicaciones de Python. Sin embargo, gestionar diccionarios duplicados puede resultar complicado. Este artículo analiza cómo eliminar duplicados de manera eficiente y obtener una lista de diccionarios únicos.

Considere una lista de diccionarios:

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

Abordar el problema

Para deduplicar una lista de diccionarios, un enfoque sencillo implica iterar sobre la lista y comparar cada diccionario con los demás. Sin embargo, este proceso puede resultar costoso desde el punto de vista computacional para listas grandes.

Uso de un diccionario temporal

Una solución más eficiente aprovecha un diccionario temporal para manejar la deduplicación. La clave del diccionario se establece en el campo de identificación de cada diccionario y el valor se establece en el diccionario mismo. Esta operación filtra eficazmente los duplicados porque cada identificación única corresponderá solo a una entrada del diccionario.

Recuperación de diccionarios únicos

Una vez que se completa el diccionario temporal, los valores (que representan los diccionarios únicos) se pueden recuperar usando el método de valores().

Implementación de Python

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 en L}.values())

Python 2.5/2.6:

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

Estas soluciones concisas dan como resultado una lista de diccionarios únicos:
dict((v['id'],v) for v in L).values()
[ {'id': 1, 'nombre': 'juan', 'edad': 34}, {'id': 2, 'nombre': 'hanna', 'edad': 30} ]

Este enfoque elimina eficientemente los duplicados aprovechando un diccionario temporal para identificar y extraer valores de diccionario únicos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3