En realidad, pprint parece ordenar las claves para usted en python2.5
>>> from pprint import pprint
>>> mydict = {'a':1, 'b':2, 'c':3}
>>> pprint(mydict)
{'a': 1, 'b': 2, 'c': 3}
>>> mydict = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
>>> pprint(mydict)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
>>> d = dict(zip("kjihgfedcba",range(11)))
>>> pprint(d)
{'a': 10,
'b': 9,
'c': 8,
'd': 7,
'e': 6,
'f': 5,
'g': 4,
'h': 3,
'i': 2,
'j': 1,
'k': 0}
Pero no siempre bajo Python 2.4
>>> from pprint import pprint
>>> mydict = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
>>> pprint(mydict)
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
>>> d = dict(zip("kjihgfedcba",range(11)))
>>> pprint(d)
{'a': 10,
'b': 9,
'c': 8,
'd': 7,
'e': 6,
'f': 5,
'g': 4,
'h': 3,
'i': 2,
'j': 1,
'k': 0}
>>>
Al leer el código fuente de pprint.py (2.5), ordena el diccionario usando
items = object.items()
items.sort()
para multilínea o esto para una sola línea
for k, v in sorted(object.items()):
antes de que intente imprimir algo, por lo que si su diccionario se ordena correctamente, entonces debería imprimir correctamente. En 2.4, falta el segundo sorted () (no existía entonces) por lo que los objetos impresos en una sola línea no se ordenarán.
Entonces, la respuesta parece ser usar python2.5, aunque esto no explica del todo su resultado en la pregunta.
Actualización de Python3
Impresión bonita por claves ordenadas (lambda x: x [0]):
for key, value in sorted(dict_example.items(), key=lambda x: x[0]):
print("{} : {}".format(key, value))
Impresión bonita por valores ordenados (lambda x: x [1]):
for key, value in sorted(dict_example.items(), key=lambda x: x[1]):
print("{} : {}".format(key, value))