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})
您可以monkey patchpprint模块。在
由于第二个输出基本上是随机排序的,所以您的输出可能与我的不同:
^{pr2}$另一个更复杂但更易于使用的版本:
您可以子类}。在
PrettyPrinter
,并从_pprint_dict
中删除{注意:这段代码是python3.5+
从python3.8开始,您can finally disable this。请注意,从python3.7(实际上,甚至从3.6开始)起,字典都是按插入顺序排列的。在
或者,创建一个pretty printer object:
^{pr2}$这不会影响集合(仍然排序),但是集合没有插入顺序保证。在
相关问题 更多 >
编程相关推荐