简析Python内置模块pprint

pprint是python内置的打印模块,pprint和print唯一的区别就是pprint打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。特别是对于特别长的数据打印,print输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint打印方式。

import pprint

array = ["pprint是python内置的打印模块,pprint和print唯一的区别就是pprint打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。", "特别是对于特别长的数据打印,print输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint打印方式。"]
pprint.pprint(array)

# 输出结果
['pprint是python内置的打印模块,pprint和print唯一的区别就是pprint打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。',
 '特别是对于特别长的数据打印,print输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint打印方式。']

但在使用pprint过程中发现,对于字典的输出会默认排序:

import pprint

d = {
    5: 'a',
    1: 'd',
    3: 'b',
    6: 'e'
}

pprint.pprint(d)

# 输出结果
{1: 'd', 3: 'b', 5: 'a', 6: 'e'}

显然,字典d经过pprint的打印已经被排序了。有时这并不是我们想要的,怎么才能取消pprint默认的排序功能?通过help(pprint),发现pprint模块有个PrettyPrinter类:

class PrettyPrinter(builtins.object)
     |  PrettyPrinter(indent=1, width=80, depth=None, stream=None, *, compact=False, sort_dicts=True)
     |  
     |  Methods defined here:
     |  
     |  __init__(self, indent=1, width=80, depth=None, stream=None, *, compact=False, sort_dicts=True)
     |      Handle pretty printing operations onto a stream using a set of
     |      configured parameters.
	 ...

我们看到PrettyPrinter类初始化有个关键字参数sort_dicts=True,那么将sort_dicts=True改为False呢?

import pprint

d = {
    5: 'a',
    1: 'd',
    3: 'b',
    6: 'e'
}

pp = pprint.PrettyPrinter(sort_dicts=False)
pp.pprint(d)

# 输出
{5: 'a', 1: 'd', 3: 'b', 6: 'e'}

果然输出没有对字典d做出排序操作,完美。我使用的python 3.8.1,可能在低于该版本的python中PrettyPrinter类初始化方法中并没有sort_dicts=False这个关键字参数,大家使用时注意一下。

全部评论

相关推荐

评论
1
收藏
分享
牛客网
牛客企业服务