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.

Problema de fusión de listas: fusión de una matriz bidimensional bajo ciertas condiciones.

Quiero fusionar el tercer índice (lista numérica) en test_list si los primeros dos índices ('2021-03-18','Noche') son iguales.
Por ejemplo:
test_list:

[['2021-03-18', 'Noche', [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27]],
['2021-03-18', 'Noche', [46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59]],
['2021-03-19','Otro', [33, 34, 35, 36, 37, 38, 57,58,59]]]

¿Cómo fusiono esto en una lista como esta?
Resultado deseado:
[
['2021-03-18', 'Noche', [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59]],
['2021-03-19', 'Otro', [33, 34, 35, 36, 37, 38, 57,58,59]]
]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para fusionar el tercer índice de test_list si los dos primeros índices ('2021-03-18', 'Night') son iguales, puedes usar el siguiente código Python:

    merged_list = []
    for sublist in test_list:
        if sublist[:2] in [x[:2] for x in merged_list]:
            for merged_sublist in merged_list:
                if merged_sublist[:2] == sublist[:2]:
                    merged_sublist[2].extend(sublist[2])
        else:
            merged_list.append(sublist)
    

    El primer bucle for itera a través de cada sublista en test_list. La declaración if verifica si los dos primeros elementos de la sublista (sublist[:2]) ya existen en merged_list. Si es así, entonces el segundo bucle for encuentra la sublista correspondiente en merged_list y agrega el tercer índice de la sublista actual a ella. Si no, la sublista se agrega como está a merged_list.

    La merged_list producida por el código anterior debería ser el resultado deseado.

Comments are closed.