Agregando una lista como valor de diccionario
Si tengo una lista de listas, por ejemplo
l=[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
y un diccionario cuyo valor es de tipo diccionario, por ejemplo
d={"id1":{"A": "", "C": "", "G": "", "T": ""},"id2":{"A":"","C":"","G":"","T":""},
"id3":{"A": "", "C": "", "G": "", "T": ""},"id4":{"A": "", "C": "", "G": "", "T": ""}}
Quiero recorrer la lista y asignar cada elemento a la clave correspondiente en d, la salida sería algo como
d={"id1":{"A": "1", "C": "2", "G": "3", "T": "4"},"id2":{"A":"5","C":"6","G":"7","T":"8"},
"id3":{"A": "9", "C": "10", "G": "11", "T": "12"},"id4":{"A": "13", "C": "14", "G": "15", "T": "16"}}
Pero en su lugar obtengo lo siguiente:
{'id1': {'A': 15, 'C': 15, 'G': 15, 'T': 15}, 'id2': {'A': 15, 'C': 15, 'G': 15, 'T': 15}, 'id3': {'A': 15, 'C': 15, 'G': 15, 'T': 15}, 'id4': {'A': 15, 'C': 15, 'G': 15, 'T': 15}}
Mi código hasta ahora:
for k,v in d.items():
for sub_k,sub_value in v.items():
for i in range(len(l)):
for j in range(len(l[i])):
d[k][sub_k]=l[i][j]
davy.ai
El problema con el código es que está iterando a través de la lista completa para cada par clave-valor en el diccionario, por lo que cada clave en el diccionario termina con el último valor que se le asignó.
Para solucionarlo, solo necesitas usar el índice una vez para acceder a los valores correspondientes en la lista de listas. Aquí está el código corregido:
Este código itera a través de las claves en el diccionario, y para cada clave itera a través de las subclaves, luego asigna el valor del índice correspondiente en la sublista. Ten en cuenta que usamos
enumerate
para obtener tanto el índice como la clave en el mismo bucle. Además, necesitamos obtener el índice de la subclave en la lista de subclaves para acceder al valor correspondiente en la sublista.