Si vous lisez la source de pprint.py
vous trouverez que dans PrettyPrinter._pprint_dict()
la méthode responsable du formatage des dicts :
def _pprint_dict(self, object, stream, indent, allowance, context, level):
write = stream.write
write('{')
if self._indent_per_level > 1:
write((self._indent_per_level - 1) * ' ')
length = len(object)
if length:
items = sorted(object.items(), key=_safe_tuple)
self._format_dict_items(items, stream, indent, allowance + 1,
context, level)
write('}')
_dispatch[dict.__repr__] = _pprint_dict
Il y a cette ligne items = sorted(object.items(), key=_safe_tuple)
Vous devrez l'ignorer vous-même en faisant un copier-coller et en supprimant la ligne en question dans votre propre script :
import pprint as pp
def _pprint_dict(self, object, stream, indent, allowance, context, level):
write = stream.write
write('{')
if self._indent_per_level > 1:
write((self._indent_per_level - 1) * ' ')
length = len(object)
if length:
self._format_dict_items(object.items(), stream, indent, allowance + 1,
context, level)
write('}')
pp.PrettyPrinter._dispatch[dict.__repr__] = _pprint_dict
de sorte que :
pp.pprint({"b" : "Maria", "c" : "Helen", "a" : "George"}, width=1)
s'affichera (en Python 3.6+) :
{'b': 'Maria',
'c': 'Helen',
'a': 'George'}