es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar valores duplicados en una lista de diccionarios

Necesito encontrar los diccionarios en una lista que tengan la misma clave-valor y crear una nueva lista en la cual solo se conserve el primer diccionario.

Lista de ejemplo:

lst_in = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}, {'First': 3, 'Second': 4}]

La clave-valor duplicada sobre la cual iterar debe ser ‘Second’. Entonces, en el ejemplo, el primer y tercer diccionario son iguales.

He intentado buscar en https://stackoverflow.com/questions/38621915/find-duplicates-in-python-list-of-dictionaries y https://stackoverflow.com/questions/15091000/python-list-of-dictionaries-find-duplicates-based-on-value, pero no puedo encontrar la respuesta exacta. Solo estoy buscando una clave-valor. Los diccionarios siempre tendrán las mismas claves.

Resultado esperado:

lst_out = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de abordar este problema es iterando sobre la lista y creando una nueva lista solo con la primera aparición de cada par clave-valor. Aquí hay un ejemplo de código en Python:

    lst_in = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}, {'First': 3, 'Second': 4}]
    lst_out = []
    
    # Crea un conjunto para llevar el seguimiento de los pares clave-valor únicos
    seen = set()
    
    # Itera sobre la lista de diccionarios
    for d in lst_in:
        # Obtiene el valor de la clave 'Second'
        value = d['Second']
        # Comprueba si ya hemos visto este par clave-valor
        if value not in seen:
            # Agrega el diccionario a la lista de salida y marca el par clave-valor como visto
            lst_out.append(d)
            seen.add(value)
    
    # Imprime la lista de salida
    print(lst_out)
    

    Este código crea una lista vacía lst_out para almacenar los diccionarios de salida. También crea un conjunto seen para llevar el seguimiento de los pares clave-valor que ya hemos visto.

    El código luego itera sobre la lista de diccionarios lst_in. Para cada diccionario d, obtiene el valor de la clave ‘Second’ y verifica si ya hemos visto este valor. Si el valor no está en el conjunto seen, agrega el diccionario a la lista de salida lst_out y agrega el valor al conjunto seen. De lo contrario, continúa con el siguiente diccionario.

    Finalmente, el código imprime la lista de salida.

    En este ejemplo, la salida debería ser:

    [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}]
    

    porque el primer y tercer diccionarios tienen el mismo valor para la clave ‘Second’.

Comments are closed.