Diccionarios de concatenación
-
22-07-2019 - |
Pregunta
Tengo tres listas, la primera es una lista de nombres, la segunda es una lista de diccionarios y la tercera es una lista de datos. Cada posición en una lista corresponde con las mismas posiciones en las otras listas. List_1 [0] tiene los datos correspondientes en List_2 [0] y List_3 [0], etc. Me gustaría convertir estas tres listas en un diccionario dentro de un diccionario, siendo los valores en List_1 las claves principales. ¿Cómo hago esto mientras mantengo todo en orden?
Solución
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> dict(zip(a, zip(b, c)))
{1: (4, 7), 2: (5, 8), 3: (6, 9)}
Consulte la documentación para obtener más información sobre zip .
Como señala lionbest a continuación, es posible que desee ver itertools.izip ( )
si sus datos de entrada son grandes. izip
hace esencialmente lo mismo que zip
, pero crea iteradores en lugar de listas. De esta manera, no crea grandes listas temporales antes de crear el diccionario.
Otros consejos
Python 3:
combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
Python 2.5:
combined = {}
for i, name in enumerate(List_1):
combined[name] = dict(data1=List_2[i], data2=List_3[i])
si el orden de estas cosas es importante, no debe usar un diccionario. por definición, no están ordenados. puede usar una de las muchas implementaciones ordenadas_diccionarias flotando , o espere a Python 2.7 o 3.1 que incluirá una implementación de diccionario ordenada en el módulo de colecciones.