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 asigno una etiqueta/nombre de columna a cada elemento de una matriz anidada dentro de una matriz?

Tengo los siguientes datos:

header = ['EXPERIMENT_ID', 'SESSION_ID', 'TRIAL_END', 'TRIAL_START']

data = ([(1, 1,  85.3543804,  74.7716105),
       (1, 1,  95.3867684,  85.3710747),
       (1, 1, 105.4189535,  95.4033732)])

¿Cómo puedo hacer que data[n][0] se etiquete como ‘EXPERIMENT‘, data[n][1] como ‘SESSION‘, data[n][2] como ‘TRIAL‘ y data[n][3] como ‘TRIAL‘?

Sé que dict() es el camino a seguir para este proceso de combinación, así que lo visualizo como:

datadict = (dict(EXPERIMENT_ID = 1, SESSION_ID= 1, TRIAL_END = 85.3543804, TRIAL_START = 74.7716105), (dict(EXPERIMENT_ID = 1, SESSION_ID= 1, TRIAL_END = 95.3867684, TRIAL_START = 85.3710747)...)

Actualmente tengo un bucle dentro de otro bucle que hace esto accediendo a cada variable uno por uno, pero está ocupando una parte considerable del espacio dentro del propio script. Me preguntaba si hay una manera mucho más eficiente de hacer esta asignación.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma eficiente de realizar esta tarea es utilizar una comprensión de lista junto con la función zip() para crear un diccionario para cada tupla en la lista de datos. Aquí hay un ejemplo de fragmento de código:

    datadict = [dict(zip(header, row)) for row in data]
    

    En este código, iteramos sobre cada tupla en la lista de datos utilizando una comprensión de lista, y para cada tupla creamos un diccionario usando la lista de encabezados como claves y los valores correspondientes de la tupla. La función zip() se utiliza para emparejar las claves y los valores en cada iteración.

    Este enfoque evita la necesidad de bucles for anidados y debería ser más eficiente en términos de complejidad de espacio y tiempo.

Comments are closed.