ur_dir iteritems handling fdp10 python dictionary reverse

python - iteritems - keyerror ur_dir



¿Cómo revertir el orden de las teclas en dict Python? (7)

El dict de Python no está ordenado en 2.x. Pero hay una implementación ordenada de dictado en 3.1 .

Este es mi código:

a = {0:''000000'',1:''11111'',3:''333333'',4:''444444''} for i in a: print i

muestra:

0 1 3 4

pero quiero que muestre:

4 3 1 0

¿entonces Que puedo hacer?


Las claves del pedido son iteradas en es arbitrario. Solo fue una coincidencia que estuvieran en orden ordenado.

>>> a = {0:''000000'',1:''11111'',3:''333333'',4:''444444''} >>> a.keys() [0, 1, 3, 4] >>> sorted(a.keys()) [0, 1, 3, 4] >>> reversed(sorted(a.keys())) <listreverseiterator object at 0x02B0DB70> >>> list(reversed(sorted(a.keys()))) [4, 3, 1, 0]


Los diccionarios de Python no tienen ningún "orden" asociado con ellos. Es simplemente una ''coincidencia'' que el dict está imprimiendo el mismo orden. No hay garantías de que los elementos de un diccionario salgan en ningún orden.

Si desea ocuparse del pedido, deberá convertir el diccionario a una lista.

a = list(a) # keys in list a = a.keys() # keys in list a = a.values() # values in list a = a.items() # tuples of (key,value) in list

Ahora puede ordenar la lista como normal, por ejemplo, a.sort() y revertirla también, por ejemplo, a.reverse()


Los diccionarios no están ordenados, por lo que no se pueden revertir. El orden de la salida actual es arbitrario.

Dicho esto, puedes pedir las llaves por supuesto:

for i in sorted(a.keys(), reverse=True): print a[i];

pero esto le da el orden inverso de las claves ordenadas , no necesariamente el orden inverso de las claves cómo se han agregado. Es decir, no le dará 1 0 3 si su diccionario era:

a = {3:''3'', 0:''0'', 1:''1''}


Tratar:

for i in sorted(a.keys(), reverse=True): print i


sólo inténtalo,

ENTRADA: a = {0: ''000000'', 1: ''11111'', 3: ''333333'', 4: ''444444''}

[x para x en ordenado (a.keys (), reverse = True)]

SALIDA: [4, 3, 1, 0]


for i in reversed(sorted(a.keys())): print i