Python 3.8 or newer:
Use sort_dicts=False
:
pprint.pprint(data, sort_dicts=False)
Python 3.7 or older:
You can monkey patch the pprint module.
import pprint
pprint.pprint({"def":2,"ghi":3,"abc":1,})
pprint._sorted = lambda x:x
# Or, for Python 3.7:
# pprint.sorted = lambda x, key=None: x
pprint.pprint({"def":2,"ghi":3, "abc":1})
Since the 2nd output is essentiallly randomly sorted, your output may be different from mine:
{'abc': 1, 'def': 2, 'ghi': 3}
{'abc': 1, 'ghi': 3, 'def': 2}
Another version that is more complex, but easier to use:
import pprint
import contextlib
@contextlib.contextmanager
def pprint_nosort():
# Note: the pprint implementation changed somewhere
# between 2.7.12 and 3.7.0. This is the danger of
# monkeypatching!
try:
# Old pprint
orig,pprint._sorted = pprint._sorted, lambda x:x
except AttributeError:
# New pprint
import builtins
orig,pprint.sorted = None, lambda x, key=None:x
try:
yield
finally:
if orig:
pprint._sorted = orig
else:
del pprint.sorted
# For times when you don't want sorted output
with pprint_nosort():
pprint.pprint({"def":2,"ghi":3, "abc":1})
# For times when you do want sorted output
pprint.pprint({"def":2,"ghi":3, "abc":1})
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…