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