El problema es una lista de números de habitación y detalles de invitado que arranqué directamente de un archivo txt que debe colocarse en un diccionario con el número de habitación como las claves y los detalles como los valores.¿Cómo ordeno un diccionario?
La lista de invitados es literalmente una lista, cada elemento representa el número de habitación, el nombre del huésped, la llegada, las fechas de salida. Las habitaciones sin nada a su lado están vacías.
nlist = [['101'], ['102'], ['103'],
['201', ' John Cleese', ' 5/5/12', ' 5/7/12'], ['202'],
['203', ' Eric Idle', ' 7/5/12', ' 8/7/12'], ['301'], ['302'], ['303']]
Básicamente, tengo que conseguir eso en un diccionario. Esto es lo que he intentado:
guests = {}
for i in nlist:
if len(i) == 1:
key = i[0]
guests[key] = None
else:
key = i[0]
val = i[1],i[2],i[3]
guests[key] = val
que me da:
guests = {'201': (' John Cleese', ' 5/5/12', ' 5/7/12'),
'203': (' Eric Idle', ' 7/5/12', ' 8/7/12'), '202': None, '301': None,
'302': None, '303': None, '102': None, '103': None, '101': None}
Como se puede ver el diccionario se junta en ningún orden en particular. Sin embargo, para este ejercicio en particular, el diccionario debe estar en orden desde el número de habitación más bajo al más alto. Creo que pensé que simplemente iteraría a través de cada lista interna de principio a fin, lo probaría, y simplemente construiría el diccionario en ese orden.
¿Alguien sabe cómo escribir el código correctamente para que el diccionario salga como {'101': Ninguno, '102', Ninguno, '103': Ninguno ... etc.)? Y con suerte, alguien podría explicar por qué mi código no funcionó como yo también quería.
Las entradas de diccionario se almacenan como hash y, por naturaleza, no están ordenadas. ¿Su tarea requiere que use un diccionario? ¿Por qué los necesitas ordenados? –
posible duplicado de [Pedidos de elementos en el diccionario Python] (http://stackoverflow.com/questions/3127945/items-ordering-in-python-dictionary) – geoffspear
Lo siento muchachos, mi título es un poco engañoso, ¿no? Estaba más interesado en por qué el dict se involucra de esa manera en particular. Lo que he recogido de todas sus respuestas es que 'simplemente es' jajaja sí, requiere un diccionario, pero podría salirme con uno desordenado si uso el código de aix debajo de – bang