【Python】如何使用 Python 的 pprint库格式化和输出列表和字典
这两天, 田辛老师在进行几个OpenCV的项目, 涉及到大量的dict以及list内容的输出。 不多不说, python的print函数对于字典和列表的表示并不友好。 在此时,我们可以通过使用 Python 的标准库 pprint 模块,以干净的格式输出和显示列表和字典等对象。pprint 是“pretty-print”的缩写。
1 pprint的基本用法
普通print()
函数将列表和字典的元素打印在一行上,没有换行符。例如,如下代码:
point_lst = [{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '张三', 'Age': 20, 'Points': [90, 10]}, {'Name': '李四', 'Age': 30, 'Points': [70, 30]}]
print(point_lst)
[{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '张三', 'Age': 20, 'Points': [90, 10]}, {'Name': '李四', 'Age': 30, 'Points': [70, 30]}]进程已结束,退出代码0
这个输出其实是相当不友好的。 这个list但凡长一点看起来就非常的麻烦, 那么这种情况下使用pprint
的方法就很方便:
pprint.pprint(point_lst)
输出的结果是:
[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]},{'Age': 20, 'Name': '张三', 'Points': [90, 10]},{'Age': 30, 'Name': '李四', 'Points': [70, 30]}]进程已结束,退出代码0
2 指定输出宽度(字符数):width
2.1 例子:
pprint.pprint(point_lst, width=40)
输出结果是:
[{'Age': 40,'Name': '田辛','Points': [80, 20]},{'Age': 20,'Name': '张三','Points': [90, 10]},{'Age': 30,'Name': '李四','Points': [70, 30]}]进程已结束,退出代码0
2.2 特殊说明
如果你给的width值特别大, 比如400, 那么这个时候pprint
会和print
没有区别。
pprint.pprint(point_lst, width=400)
输出结果是:
[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]}, {'Age': 20, 'Name': '张三', 'Points': [90, 10]}, {'Age': 30, 'Name': '李四', 'Points': [70, 30]}]进程已结束,退出代码0
2.3 默认换行
默认情况下width
会自动检查列表或者字典的元素是否适合输出, 如果不适合的话,他们将被换行。
pprint.pprint(list(range(10)))
pprint.pprint(list(range(1000000, 1000010)))
输出结果是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1000000,1000001,1000002,1000003,1000004,1000005,1000006,1000007,1000008,1000009]进程已结束,退出代码0
2.4 紧凑换行:compact=True
在默认换行中, 如果产生换行,列表的每个元素都会换行。 有的时候, 这种换行显示会过长。 在这种情况下, 可以使用紧凑换行。
pprint.pprint(list(range(1000000, 1000020)), compact=True)
输出结果是:
[1000000, 1000001, 1000002, 1000003, 1000004, 1000005, 1000006, 1000007,1000008, 1000009, 1000010, 1000011, 1000012, 1000013, 1000014, 1000015,1000016, 1000017, 1000018, 1000019]进程已结束,退出代码0
3 指定要打印的元素的深度:depth
您可以指定要输出的元素的深度depth
作为参数。这里的深度就是嵌套数据的深度。
pprint.pprint(point_lst, depth=1)
pprint.pprint(point_lst, depth=2)
输出结果是:
[{...}, {...}, {...}]
[{'Age': 40, 'Name': '田辛', 'Points': [...]},{'Age': 20, 'Name': '张三', 'Points': [...]},{'Age': 30, 'Name': '李四', 'Points': [...]}]进程已结束,退出代码0
查看上面的执行结果, 你会发现, 对于超出depth
深度的部分, 会直接用...
表示。
4 制定缩进的宽度:indent
通过设定indent
可以指定缩进, 默认缩进为1, 读者可以仔细看刚的例子中, 第二行会有一个字符的缩进哦。
pprint.pprint(point_lst, width=4, indent=4)
输出结果是:
[ { 'Age': 40,'Name': '田辛','Points': [ 80,20]},{ 'Age': 20,'Name': '张三','Points': [ 90,10]},{ 'Age': 30,'Name': '李四','Points': [ 70,30]}]进程已结束,退出代码0
5 全部代码
老规矩, 全部代码奉上:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
#-----------------------------------------------------------------------------
# --- TDOUYA STUDIOS ---
#-----------------------------------------------------------------------------
#
# @Project : di08-tdd-cdg-python-learning
# @File : pprint_learning.py
# @Author : tianxin.xp@gmail.com
# @Date : 2023/4/15 17:16
#
# pprint 示例程序
#
#--------------------------------------------------------------------------"""
import pprint point_lst = [{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '张三', 'Age': 20, 'Points': [90, 10]}, {'Name': '李四', 'Age': 30, 'Points': [70, 30]}] print(point_lst) pprint.pprint(point_lst) pprint.pprint(point_lst, width=40) pprint.pprint(point_lst, width=400) pprint.pprint(list(range(10)))
pprint.pprint(list(range(1000000, 1000010)))
pprint.pprint(list(range(1000000, 1000020)), compact=True) pprint.pprint(point_lst, depth=1)
pprint.pprint(point_lst, depth=2) pprint.pprint(point_lst, width=4, indent=4)
【Python】如何使用 Python 的 pprint库格式化和输出列表和字典相关推荐
- Python序列 数据类型 创建方式 Tuple元组 Str字符串 List列表 dict字典 Set集合 range,zip,map,enumerate
Python 序列分类 数据类型 详细介绍 Python 主要数据类型: 元组Tuple, 字符串Str,列表List,字典Dict,集合Set 对比 元组Tuple 字符串Str 列表List 字典 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型
学习目标 了解魔法世界中可更改容器--变量 了解魔法世界的基本数值类型--字符串.整数 了解魔法百宝箱--字典.列表 了解列表如何添加值 了解字典如何添加值 了解字典与列表定义的不同符号 目录 第一篇 ...
- python【蓝桥杯vip练习题库】ADV-305输出二进制表示
试题 算法提高 输出二进制表示 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入[-128,127]内的整数,输出其二进制表示.提示,可使用按位与& 输入格式 例:7 输 ...
- python【蓝桥杯vip练习题库】ADV-306输出三个整数的最大数
试题 算法提高 输出三个整数的最大数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 编写程序,输入3个整数,求出最大数并输出. 输入格式 输入三个整数,用空格分开. 输出格式 输出 ...
- python【蓝桥杯vip练习题库】ALGO-82 输出米字形
试题 算法训练 输出米字形 资源限制 时间限制:1.0s 内存限制:512.0MB 根据输入的正整数n (1 米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母 例如:n ...
- Python对商品属性进行二次分类并输出多层嵌套字典
题目有点长,感觉好像也解释的不太清楚,但是大概意思就是,我们在逛一个网站的时候,譬如天猫,你会看到有"女装"."男鞋"."手机"等等分类,点 ...
- python入门之容器类型数据的一系列操作之列表、字典、集合
列表的操作 1.列表的拼接 (同元组) 2.列表的重复 (同元组) 3.列表的切片 (同元组) 语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值] (1)[开始索引:] 从开始索 ...
- python学习手册-Python学习手册
Python学习手册第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者.本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成 ...
- Python 第一部分 Python基础
文章目录 1.认识 Python 1.1Python的起源 1.2解释器 1.3Python特点 1.4Python的优缺点 2.第一个HelloPython程序 2.1 Python 源程序的基本概 ...
最新文章
- C#精髓【月儿原创】第三讲 C#泛型有什么好处
- 搞懂OpenLDAP
- Graph Neural Networks: A Review of Methods and Applications(Semantic Segmentation应用解读)
- SQLite关于时间段查询的sql
- java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)
- 如何将枯燥的大数据呈现为可视化的图?
- 第 20 次 CSP认证 202009-1 检测点查询
- 如何检查手机上的 App 是不是正版?
- 链表分割——牛客剑指offer
- WorldWind学习系列六:渲染过程解析篇
- 有约束最优化问题的相关讨论
- 2021年卡信乐卡盟源码程序
- 计算机应用基础18春在线作业2,计算机应用基础19春在线作业2答案
- 精灵图案例-拼出自己名字
- Spark:利用tac+cellid基站定位
- 【Mac使用技巧】Mac中文输入法打不出来句号
- 黄一孟:骑着电驴找金矿
- chrome浏览器对应版本driver驱动
- Java 日历的制作 心得 写给自己
- Java指令屏障_指令重排序和内存屏障