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.

Cómo podemos fusionar diccionarios que tengan el mismo ‘id’ con la condición de fusionar los valores de ‘test_type’

¿Cómo podemos fusionar el diccionario con el mismo ‘id’ y con la condición de fusionar los valores de ‘test_type’?

Entrada:

[{id:'abc', type:'test', test_type:['404']}, 
 {id:'def', type:'test', test_type:['404','server_error']},
 {id:'abc', type:'test', test_type:['server_error']},
 {id:'abc', type:'test', test_type:['server_error', '404']}]

Salida esperada:

[{id:'abc', type:'test', test_type:['404','server_error']}, 
 {id:'def', type:'test', test_type:['404','server_error']}]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para fusionar diccionarios con el mismo ‘id’ y con la condición de fusionar los valores de ‘test_type’, podemos seguir estos pasos:

    1. Crear una lista de resultados vacía para almacenar los diccionarios fusionados.
    2. Crear un diccionario vacío para almacenar los ids únicos como claves y sus respectivos diccionarios como valores.
    3. Iterar a través del diccionario de entrada y verificar si el ‘id’ ya existe en el diccionario de ids únicos.
    4. Si el ‘id’ ya existe, actualizar el valor ‘test_type’ con la unión de los valores existentes y nuevos de ‘test_type’.
    5. Si el ‘id’ no existe, agregar todo el diccionario al diccionario de ids únicos.
    6. Por último, iterar a través del diccionario de ids únicos y agregar los valores a la lista de resultados.

    Aquí está el código en Python para implementar los pasos anteriores:

    input_dict = [{'id':'abc', 'type':'test', 'test_type':['404']}, 
                  {'id':'def', 'type':'test', 'test_type':['404','server_error']},
                  {'id':'abc', 'type':'test', 'test_type':['server_error']},
                  {'id':'abc', 'type':'test', 'test_type':['server_error', '404']}]
    
    result = []
    unique_ids = {}
    
    for dict in input_dict:
        id = dict['id']
        test_type = dict['test_type']
        if id in unique_ids:
            unique_ids[id]['test_type'] = list(set(unique_ids[id]['test_type']) | set(test_type))
        else:
            unique_ids[id] = dict
    
    result = list(unique_ids.values())
    print(result)
    

    La salida será:

    [{'id': 'abc', 'type': 'test', 'test_type': ['404', 'server_error']}, 
     {'id': 'def', 'type': 'test', 'test_type': ['404', 'server_error']}]
    

    Esta es la salida esperada basada en la entrada y la condición mencionadas.

Comments are closed.