python打印字典全部信息_Python漂亮打印字典的列表,缩写长列表

如果不是漂亮的打印,那么

reprlib模块将是一种方式:安全,优雅和可定制的深度嵌套和递归/自引用数据结构的处理是为了做到这一点.

然而,结合reprlib和pprint模块并不是微不足道的,至少我不能想出一个干净的方式,而不会打破(一些)漂亮的打印方面.

相反,这里是一个解决方案,只需要将PrettyPrinter子类化为裁剪/缩写列表:

from pprint import PrettyPrinter

obj = {

'key_1': [

'EG8XYD9FVN', 'S2WARDCVAO', 'J00YCU55DP', 'R07BUIF2F7', 'VGPS1JD0UM',

'WL3TWSDP8E', 'LD8QY7DMJ3', 'J36U3Z9KOQ', 'KU2FUGYB2U', 'JF3RQ315BY',

],

'key_2': [

'162LO154PM', '3ROAV881V2', 'I4T79LP18J', 'WBD36EM6QL', 'DEIODVQU46',

'KWSJA5WDKQ', 'WX9SVRFO0G', '6UN63WU64G', '3Z89U7XM60', '167CYON6YN',

],

# Test case to make sure we didn't break handling of recursive structures

'key_3': [

'162LO154PM', '3ROAV881V2', [1, 2, ['a', 'b', 'c'], 3, 4, 5, 6, 7],

'KWSJA5WDKQ', 'WX9SVRFO0G', '6UN63WU64G', '3Z89U7XM60', '167CYON6YN',

]

}

class CroppingPrettyPrinter(PrettyPrinter):

def __init__(self, *args, **kwargs):

self.maxlist = kwargs.pop('maxlist', 6)

return PrettyPrinter.__init__(self, *args, **kwargs)

def _format(self, obj, stream, indent, allowance, context, level):

if isinstance(obj, list):

# If object is a list, crop a copy of it according to self.maxlist

# and append an ellipsis

if len(obj) > self.maxlist:

cropped_obj = obj[:self.maxlist] + ['...']

return PrettyPrinter._format(

self, cropped_obj, stream, indent,

allowance, context, level)

# Let the original implementation handle anything else

# Note: No use of super() because PrettyPrinter is an old-style class

return PrettyPrinter._format(

self, obj, stream, indent, allowance, context, level)

p = CroppingPrettyPrinter(maxlist=3)

p.pprint(obj)

输出maxlist = 3:

{'key_1': ['EG8XYD9FVN', 'S2WARDCVAO', 'J00YCU55DP', '...'],

'key_2': ['162LO154PM',

'3ROAV881V2',

[1, 2, ['a', 'b', 'c'], '...'],

'...']}

输出maxlist = 5(触发器将列表分开排列):

{'key_1': ['EG8XYD9FVN',

'S2WARDCVAO',

'J00YCU55DP',

'R07BUIF2F7',

'VGPS1JD0UM',

'...'],

'key_2': ['162LO154PM',

'3ROAV881V2',

'I4T79LP18J',

'WBD36EM6QL',

'DEIODVQU46',

'...'],

'key_3': ['162LO154PM',

'3ROAV881V2',

[1, 2, ['a', 'b', 'c'], 3, 4, '...'],

'KWSJA5WDKQ',

'WX9SVRFO0G',

'...']}

笔记:

>这将创建列表的副本.根据数据结构的大小,这在内存使用方面可能非常昂贵.>这仅涉及列表的特殊情况.对于这个类来说,一般使用的是等效的行为,对于dict,tuples,sets,frozensets,…来说是必须的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值