Cómo eliminar duplicados de una lista en Python

Aprenda cómo eliminar duplicados de una lista en Python manteniendo o ignorando el orden. Compare conversiones de conjuntos, claves de dictado y métodos de bucle.

Pruebe esta solución en el Editor

Descripción general

Los datos duplicados con frecuencia aparecen en las listas a través de recuperaciones de bases de datos, interacciones de usuarios o agregaciones de registros. Eliminar estos duplicados es un paso fundamental de limpieza de datos que garantiza la unicidad y evita la redundancia en la lógica descendente. Python proporciona varias técnicas para lograr esto, que van desde conversiones rápidas de conjuntos hasta operaciones basadas en bucles que respetan el orden de los elementos.

La forma más rápida y común de eliminar elementos duplicados es convertir la lista en un `set` usando el constructor `set()` y luego convertirla nuevamente en una lista. Dado que los conjuntos no pueden contener valores duplicados, este proceso descarta automáticamente los duplicados. El inconveniente de este enfoque es que los conjuntos están desordenados, lo que significa que se pierde la secuencia original de elementos.

Para preservar el orden original de los elementos mientras se eliminan duplicados,Python 3.7+ ofrece una solución inteligente utilizando la clase de diccionario incorporada: `list(dict.fromkeys(my_list))`. Dado que las claves del diccionario son únicas y preservan el orden de inserción, este método deduplica elementos de manera efectiva manteniendo la secuencia intacta. Para criterios personalizados o versiones anteriores de Python, un bucle manual que utiliza un conjunto de ayuda para rastrear los elementos vistos también es muy eficaz.

Código y salida de ejecución

Este script demuestra la deduplicación de elementos de lista mediante conjuntos, claves de diccionario y bucles manuales.

deduplicate_list.py
Pruébelo en el editor
numbers = [2, 1, 2, 3, 1, 4]

# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)

# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)

# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
    if item not in seen:
        seen.add(item)
        unique_loop.append(item)
print("Loop unique:", unique_loop)
Salida terminal
Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]

Implementación paso a paso

  • Convierta la lista en un conjunto para eliminar duplicados instantáneamente usando set(my_list).
  • Utilice list(dict.fromkeys(my_list)) para eliminar duplicados conservando el orden de inserción.
  • Utilice un asistente configurado en un bucle para filtrar duplicados si necesita una validación personalizada.

Preguntas frecuentes

¿Qué método es el más rápido para listas grandes?

La conversión a un conjunto es la más rápida debido a las optimizaciones de nivel C, seguida de cerca por dict.fromkeys().

¿Cómo puedo deduplicar una lista de diccionarios?

Dado que los diccionarios no se pueden combinar, no se pueden utilizar conjuntos directamente. Debe utilizar un filtrado de comprensión de lista o bucle por ID/claves únicas.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.