迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中漂亮打印字典

作者:迹忆客 最近更新:2023/12/21 浏览次数:

本教程将介绍如何在 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 的加权随机选择

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 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 中解析日志文件

发布时间:2023/12/20 浏览次数:180 分类:Python

了解如何在 Python 中解析日志文件。日志文件包含有关在软件系统或应用程序运行期间发生的事件的信息。这些事件包括错误、用户提出的请求、Bug 等。

在 Python 中声明一个没有值的变量

发布时间:2023/12/20 浏览次数:94 分类:Python

在本教程中,我们将讨论如何在 Python 中声明一个变量而不赋值。变量是保留的内存位置,可以存储一些值。换句话说,Python 程序中的变量将数据提供给计算机以处理操作。

在 Python 中定义类全局变量

发布时间:2023/12/20 浏览次数:79 分类:Python

本教程演示了如何定义类全局变量。全局变量是一个可见变量,可以在程序的每个部分使用。全局变量也不在任何函数或方法中定义。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便