En fait, pprint semble trier les clés pour vous sous 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}
Mais pas toujours sous 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}
>>>
En lisant le code source de pprint.py (2.5), il trie le dictionnaire en utilisant
items = object.items()
items.sort()
pour une ligne multiple ou ceci pour une ligne unique
for k, v in sorted(object.items()):
avant de tenter d'imprimer quoi que ce soit, donc si votre dictionnaire est trié correctement de cette façon, il devrait imprimer correctement. En 2.4, la seconde sorted() est manquante (elle n'existait pas à l'époque), donc les objets imprimés sur une seule ligne ne seront pas triés.
La réponse semble donc être d'utiliser python2.5, bien que cela n'explique pas vraiment votre résultat dans la question.
Mise à jour de Python3
Joli imprimé par trié clés (lambda x : x[0]) :
for key, value in sorted(dict_example.items(), key=lambda x: x[0]):
print("{} : {}".format(key, value))
Pretty print by sorted valeurs (lambda x : x[1]) :
for key, value in sorted(dict_example.items(), key=lambda x: x[1]):
print("{} : {}".format(key, value))