Python - Ordenar las claves de un diccionario

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 16 puestos en Python (en relación al último mes)
Gráfica de Python

Ordenar las claves de un diccionario

Publicado por Juan José (5 intervenciones) el 01/08/2019 20:35:44
Hola,

¿Qué método es necesario para ordenar las claves de un diccionario?

Tengo esto de un libro pero no funciona, no sé si por versión de python. Estoy usando la 3.7. El libro puede ser antiguo.

1
2
3
4
5
def informe (tarifas) :
     estudiantes = tarifas.keys()
     estudiantes.sort()
     for estudiante in estudiantes :
         print ("%-20s %12.02f" %(estudiante, tarifas[estudiante]))

Para probar la función, crearemos un pequeño diccionario e imprimiremos el contenido:
>>> tarifas = {’María’: 6.23, ’Jose’: 5.45, ’Jesus’: 4.25}
>>> informe (tarifas)

En definitiva, sort() no funciona. ¿Alguien me da una alternativa?

Muchas gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Hector Madriz
Val: 361
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ordenar las claves de un diccionario

Publicado por Hector Madriz (69 intervenciones) el 01/08/2019 22:25:45
Buen dia, prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import operator
def informe (tarifas) :
  estudiantes = tarifas.keys()
  print("***SIN ORDEN*****************************************")
  for estudiante in estudiantes :
      print ("%-20s %12.02f" %(estudiante, tarifas[estudiante]))
  print("***ORDEN DE MENOR A MAYOR*****************************************")
  estudiantes = dict(sorted(tarifas.items(), key=operator.itemgetter(1),))
  for estudiante in estudiantes :
      print ("%-20s %12.02f" %(estudiante, tarifas[estudiante]))
  print("***ORDEN DE MAYOR A MENOR*****************************************")
  estudiantes = dict(sorted(tarifas.items(), key=operator.itemgetter(1),reverse=True))
  for estudiante in estudiantes :
      print ("%-20s %12.02f" %(estudiante, tarifas[estudiante]))
tarifas = {'Maria': 6.23, 'Jose': 5.45, 'Jesus': 4.25, 'Dominga': 7.2, 'Angela': 2.25}
informe (tarifas)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 16 puestos en Python (en relación al último mes)
Gráfica de Python

Ordenar las claves de un diccionario

Publicado por Juan José (5 intervenciones) el 03/08/2019 08:57:56
Buenos días,

Gracias por la respuesta.

Funciona perfectamente. Lo que no entiendo es porqué ordenando de menor a mayor (por ejemplo) Dominga va la última en lugar de después de Angela.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hector Madriz
Val: 361
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ordenar las claves de un diccionario

Publicado por Hector Madriz (69 intervenciones) el 03/08/2019 15:53:46
Buen día, siempre a la orden. Esta ordenado por su valor y el valor de Dominga es 7.2 por lo cual es el mayor; si deseas ordenar por su llave reemplaza el {sorted} así:


1
estudiantes = dict(sorted(tarifas.items()))

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar