Revista Informática

Truco Python: eliminar los valores duplicados de una lista en Python

Publicado el 29 junio 2020 por Daniel Rodríguez @analyticslane

Un problema con el que nos podemos encontrar de forma más es la identificación de valores únicos en una lista. Ya que la existencia de valores duplicados no es se interés para el análisis que se desea realizar. Por eso, saber como eliminar los valores duplicados en una lista es un truco que debemos tener en nuestro arsenal. Otro truco que también puede ser de interés es contar el número de ocurrencias de cada valor en una lista, lo que también se comentará en esta entrada.

Eliminar los valores duplicados de una lista con for

Supongamos que tenemos una lista con diferentes números. Para obtener una nueva lista sin valores duplicados solamente tenemos que crear una nueva lista vacía recorrer la lista inicial y añadiendo los valores a la nueva lista si el valor no se encuentra en esta. Lo que se puede resolver con el siguiente código:

data = [1,3,2,4,7,3,2,2,1,4]

result = []
for item in data:
    if item not in result:
        result.append(item)
        
result
[1, 3, 2, 4, 7]

En donde se puede apreciar que la lista result contiene los valores de la lista inicial ( data) sin valores duplicados. Para lo que solamente se ha utilizado código básico de Python.

Eliminar los valores duplicados de una lista con set

Una alternativa a la construcción de un bucle para eliminar los valores duplicados de una lista en Python es la instrucción set. Lo que genera una colección desordenada de objetos diferentes.

set(data)
{1, 2, 3, 4, 7}

Si lo que necesitamos es una lista para trabajar con ella solamente necesitamos convertirla con list.

list(set(data))
[1, 2, 3, 4, 7]

La principal diferencia respecto al caso anterior es que el resultado no respeta el orden de aparición en la lista original, sino que los valore se ordenarán según el valor. Por lo que este método puede no ser adecuado cuando es necesario conservar el orden de aparición de valores.

Uso de la librería Pandas

En la librería Pandas existe un método con el que obtener los valores únicos de un lista de valores. Un método que se llama unique.

import pandas as pd

pd.unique(data)

Contar el número de ocurrencias de cada valor

Finalmente pude que sea necesario contar el número de ocurrencias de cada uno de los registros. En este caso una solución puede ser crear un diccionario vacío y usar los valores como claves, sumando uno cada ve que se encuentra un valor duplicado. Proceso que se muestra en el siguiente código.

data = [(1,3),(7,3),(2,2),(2,4),(7,3),(2,2),(1,4),(7,3)]

result = {}
for item in data:
    if item not in result.keys():
        result[item] = 1
    else:
        result[item] += 1

result
{(1, 3): 1, (7, 3): 3, (2, 2): 2, (2, 4): 1, (1, 4): 1}

En donde las claves son los diferentes valores y los valores el número de ocurrencias. Para obtener un listado con los valores diferentes solamente hay que utilizar la propiedad que tiene todos los diccionarios keys().

list(result.keys())
[(1, 3), (7, 3), (2, 2), (2, 4), (1, 4)]

Conclusiones

En la entrada de hoy hemos visto un truco para Python con el que resolver un problema bastante habitual: eliminar los valores duplicados de una lista.

Imagen de Theodor Moise en Pixabay

Publicidad


Publicidad


Volver a la Portada de Logo Paperblog