¡Siento que me estoy perdiendo algo obvio aquí!
seq = {'a': ['1'], 'aa': ['2'], 'aaa': ['3'], 'aaaa': ['4'], 'aaaaa': ['5']} for s in seq: print s
salidas:
a aa aaaa aaaaa aaa
wheras seguramente debe salir:
a aa aaa aaaa aaaaa
que esta mal aqui
Gracias 🙂
Los diccionarios no están ordenados. Si necesita confiar en el pedido, necesita un OrderedDict – hay uno en el módulo de collections
en Python 2.7, o puede usar una de las muchas recetas que hay alrededor.
Los diccionarios estándar de Python no están ordenados: no hay ninguna garantía de en qué orden se devolverán las claves.
Si desea que le devuelvan sus claves en el orden en que crea las claves , puede utilizar un OrderedDict
de las collections
.
Alternativamente, si desea que su salida se clasifique según los valores de las claves, lo siguiente sería:
for s in sorted(seq): print s
por qué no lo haces (el diccionario no está ordenado ):
for s in range(5): print 'a'*s
Edit: ok as you que 🙂
la cosa está en la expresión: 'a'*s
que significa crear una nueva cadena que contenga s ‘a’.
en el intérprete de python puedes jugar con él (no es python maravilloso :))
>>> print 'a'*2 aa >>> print 'a'*3 aaa
PD: si eres nuevo en Python, te sugeriré que utilices ipython si aún no lo usas.