我有一个正在打印的大词典,可以用prettyprint查看,但是如何保持格式但又不能杀死pprint中的排序机制?
您可以猴子修补pprint模块。
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})
由于第二个输出基本上是随机排序的,因此您的输出可能与我的不同:
{'abc': 1, 'def': 2, 'ghi': 3} {'abc': 1, 'ghi': 3, 'def': 2}
另一个版本更复杂,但更易于使用:
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})