在 Python 中漂亮打印字典
本教程将介绍如何在 Python 中漂亮地打印字典。漂亮打印的意思是以一种更可读的格式或风格来呈现一些打印的内容。
在 Python 中使用 pprint()
漂亮地打印字典
pprint
是一个 Python 模块,它提供了漂亮打印 Python 数据类型的能力,使其更易读。这个模块还支持漂亮打印字典。
在 pprint
模块中,有一个同名的函数 pprint()
,它是用来漂亮打印给定字符串或对象的函数。
首先,声明一个字典数组。之后,使用函数 pprint.pprint()
对其进行漂亮打印。
import pprint
dct_arr = [
{"Name": "John", "Age": "23", "Country": "USA"},
{"Name": "Jose", "Age": "44", "Country": "Spain"},
{"Name": "Anne", "Age": "29", "Country": "UK"},
{"Name": "Lee", "Age": "35", "Country": "Japan"},
]
pprint.pprint(dct_arr)
输出:
[{'Age': '23', 'Country': 'USA', 'Name': 'John'},
{'Age': '44', 'Country': 'Spain', 'Name': 'Jose'},
{'Age': '29', 'Country': 'UK', 'Name': 'Anne'},
{'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}]
比较一下,下面是一个普通的 print()
语句的输出。
[
{"Name": "John", "Age": "23", "Country": "USA"},
{"Name": "Jose", "Age": "44", "Country": "Spain"},
{"Name": "Anne", "Age": "29", "Country": "UK"},
{"Name": "Lee", "Age": "35", "Country": "Japan"},
]
pprint()
的输出绝对更易读。它所做的是将数组中的每一个字典元素在逗号之后打散,同时也按键对字典的值进行排序。
如果你不想让你的键值对按键排序,那么 pprint()
就不适合使用,因为它的排序机制是内置在函数中的。
另外需要注意的是,pprint()
不会漂亮地打印嵌套对象,包括嵌套字典。所以如果你希望你的值是嵌套的,那么这也不是解决这个问题的办法。
在 Python 中使用 json.dumps()
漂亮地打印一个字典
在 Python json
模块中,有一个叫做 dumps()
的函数,它可以将一个 Python 对象转换成 JSON 字符串。除了转换之外,它还将字典格式化为漂亮的 JSON 格式,因此这是将字典先转换为 JSON 来漂亮打印字典的一种可行方法。
dumps()
函数接受 3 个用于漂亮打印的参数:要转换的对象,一个布尔值 sort_keys
,它决定元素是否应该按键排序,以及 indent
,它指定缩进的空格数。
对于该解决方案,我们将使用与上述相同的示例字典。sort_keys
设置为 False
以禁用排序,indent
设置为 4
空格。
import json
dct_arr = [
{"Name": "John", "Age": "23", "Country": "USA"},
{"Name": "Jose", "Age": "44", "Country": "Spain"},
{"Name": "Anne", "Age": "29", "Country": "UK"},
{"Name": "Lee", "Age": "35", "Country": "Japan"},
]
print(json.dumps(dct_arr, sort_keys=False, indent=4))
输出:
[
{
"Age": "23",
"Country": "USA",
"Name": "John"
},
{
"Age": "44",
"Country": "Spain",
"Name": "Jose"
},
{
"Age": "29",
"Country": "UK",
"Name": "Anne"
},
{
"Age": "35",
"Country": "Japan",
"Name": "Lee"
}
]
与 pprint()
函数的输出相比,它的可读性更强,尽管它花费了更多的行数,因为它是采用了 JSON 格式。
如果给定的值里面有一个嵌套的字典怎么办?让我们编辑一下这个例子,看看输出。
import json
dct_arr = [
{"Name": "John", "Age": "23", "Residence": {"Country": "USA", "City": "New York"}},
{"Name": "Jose", "Age": "44", "Residence": {"Country": "Spain", "City": "Madrid"}},
{"Name": "Anne", "Age": "29", "Residence": {"Country": "UK", "City": "England"}},
{"Name": "Lee", "Age": "35", "Residence": {"Country": "Japan", "City": "Osaka"}},
]
print(json.dumps(dct_arr, sort_keys=False, indent=4))
输出:
[
{
"Name": "John",
"Age": "23",
"Residence": {
"Country": "USA",
"City": "New York"
}
},
{
"Name": "Jose",
"Age": "44",
"Residence": {
"Country": "Spain",
"City": "Madrid"
}
},
{
"Name": "Anne",
"Age": "29",
"Residence": {
"Country": "UK",
"City": "England"
}
},
{
"Name": "Lee",
"Age": "35",
"Residence": {
"Country": "Japan",
"City": "Osaka"
}
}
]
很明显,使用 json.dump()
支持漂亮的 JSON 嵌套字典,视觉上看起来很干净,即使是嵌套的,也非常可读。
在 Python 中使用 yaml.dump()
漂亮的打印字典
另一种打印字典的方法是使用 yaml
模块的 dump()
函数。它的作用与 json.dumps()
函数相同,但使用的是 YAML 格式而不是 JSON。
首先,使用 pip
安装 YAML 模块。
pip install pyyaml
或者如果使用 Python 3 和 pip3
安装 YAML 模块。
pip3 install pyyaml
让我们用 JSON 例子中使用的同样的嵌套例子来尝试一下。
注意新的参数 default_flow_style
,它决定了 dump 的输出样式应该是 inline
还是 block
。在这种情况下,输出应该是块式的,因为我们希望它是可读的,所以将这个参数设置为 False
。
import yaml
dct_arr = [
{"Name": "John", "Age": "23", "Residence": {"Country": "USA", "City": "New York"}},
{"Name": "Jose", "Age": "44", "Residence": {"Country": "Spain", "City": "Madrid"}},
{"Name": "Anne", "Age": "29", "Residence": {"Country": "UK", "City": "England"}},
{"Name": "Lee", "Age": "35", "Residence": {"Country": "Japan", "City": "Osaka"}},
]
print(yaml.dump(dct_arr, sort_keys=False, default_flow_style=False))
输出:
- Name: John
Age: '23'
Residence:
Country: USA
City: New York
- Name: Jose
Age: '44'
Residence:
Country: Spain
City: Madrid
- Name: Anne
Age: '29'
Residence:
Country: UK
City: England
- Name: Lee
Age: '35'
Residence:
Country: Japan
City: Osaka
总之,YAML dump()
函数是否比 JSON dumps()
更可读,这是每个人的主观感受。这要看个人喜好或者需要什么类型的输出。当涉及到比较复杂的数据结构或嵌套对象时,这两个函数都比 pprint
的输出要好。
相关文章
使用 Python 的加权随机选择
发布时间:2023/12/21 浏览次数:133 分类:Python
-
本教程演示如何在 python 中获得加权随机选择。在 Python 中,我们可以使用 Random 和 NumPy 库轻松生成随机数。
Python 中的平滑数据
发布时间:2023/12/20 浏览次数:101 分类:Python
-
本教程演示了如何在 Python 中平滑图形中的曲线。Python 在数据分析和可视化方面有着广泛的应用。
Python 中捕获键盘中断错误
发布时间:2023/12/20 浏览次数:187 分类:Python
-
本教程讨论如何在 Python 中捕获 KeyboardInterrupt。当用户使用 Ctrl + C 或 Ctrl + Z 手动尝试停止正在运行的程序时,或在 Jupyter Notebook 的情况下通过中断内核
在 Python 中实现低通滤波器
发布时间:2023/12/20 浏览次数:101 分类:Python
-
本教程讨论如何在 python 中创建低通滤波器。低通滤波器是信号处理基础中的一个术语,经常用于过滤信号以获得更准确的结果。
在 Python 中使用 requests 模块实现 Curl 命令
发布时间:2023/12/20 浏览次数:72 分类:Python
-
在本文中,你将学习如何使用 Python 中的 Requests 模块实现 curl 命令。我们讨论了 Get、Post、Put 和 Delete curl 命令。
在 Python 中使用 fetchall() 从数据库中提取元素
发布时间:2023/12/20 浏览次数:142 分类:Python
-
本文解释了 Python 中 fetchall() 方法的实现。该程序为数据库创建一个游标并处理错误异常。导出的输出给出了查询中提供的特定表中的元素列表。
在 Python 中解析日志文件
发布时间:2023/12/20 浏览次数:180 分类:Python
-
了解如何在 Python 中解析日志文件。日志文件包含有关在软件系统或应用程序运行期间发生的事件的信息。这些事件包括错误、用户提出的请求、Bug 等。
在 Python 中声明一个没有值的变量
发布时间:2023/12/20 浏览次数:94 分类:Python
-
在本教程中,我们将讨论如何在 Python 中声明一个变量而不赋值。变量是保留的内存位置,可以存储一些值。换句话说,Python 程序中的变量将数据提供给计算机以处理操作。
在 Python 中定义类全局变量
发布时间:2023/12/20 浏览次数:79 分类:Python
-
本教程演示了如何定义类全局变量。全局变量是一个可见变量,可以在程序的每个部分使用。全局变量也不在任何函数或方法中定义。