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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top