迹忆客 专注技术分享

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

应该在 Python 中使用 None 作为字典键吗

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

None 可以用作 Python 中的字典键,因为它是可哈希对象。 但是,如果必须将字典转换为 JSON,则应避免使用 None 作为字典键,因为 JSON 对象中的所有键都必须是字符串。

my_dict = {'name': 'Alice', None: 30}

print(my_dict[None])  # 👉️ 30

print(None in my_dict)  # 👉️ True

Python 中的大多数不可变内置对象都是可散列的,而可变对象是不可散列的。

如果一个对象是可散列的,那么它可以用作字典中的键和集合中的元素,因为这些数据结构在内部使用散列值。

可哈希对象包括 - Nonestrintbooltuplefrozenset

不可散列的对象包括 - listdictset

请注意 ,元组和 frozenset 仅在其元素可哈希时才可哈希。

None 对象是可散列的,可以用作字典键。 但是,如果必须将字典转换为 JSON,则应避免使用它。

import json

my_dict = {'name': 'Jiyik', None: None}

print(my_dict)  # 👉️ {'name': 'Jiyik', None: None}

my_json = json.dumps(my_dict)
print(my_json)  # 👉️ '{"name": "Jiyik", "null": null}'

my_dict_again = json.loads(my_json)
print(my_dict_again) # 👉️ {'name': 'Jiyik', 'null': None}

Python 中使用 None 作为字典键

json.dumps 方法将 Python 对象转换为 JSON 格式的字符串。

json.loads 方法将 JSON 字符串解析为本机 Python 对象。

我们从一个具有 None 键和 None 值的 Python 对象开始。

当我们将对象转换为 JSON 时,键和值都被转换为 null。

当我们将 JSON 字符串解析为 Python 对象时,值被转换为 None,但键仍然是字符串 null。

这是因为 JSON 键必须是字符串类型。 如果我们将任何其他类型的键传递给 json.dumps() 方法,该键会自动转换为字符串。

将键转换为字符串后,解析 JSON 字符串将在 Python 对象中返回一个字符串键。

正如我们所期望的那样,尝试访问新字典中的 None 键会引发 KeyError ,因为该键现在已重命名为 null。

my_dict = {'name': 'Alice', 'null': None}

# ⛔️ KeyError: None
print(my_dict[None])

python KeyError None

这就是为什么当你必须使用 json 模块时,你通常应该避免使用 None 作为字典键,因为它比它值得的麻烦更多。

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

本文地址:

相关文章

Python for 循环中的下一项

发布时间:2023/04/26 浏览次数:179 分类:Python

本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。

Python While 循环用户输入

发布时间:2023/04/26 浏览次数:148 分类:Python

我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。

Python 中的整数规划

发布时间:2023/04/26 浏览次数:193 分类:Python

本文介绍了整数规划和可用于解决混合整数规划问题的 Python 工具。

在 Python 中将整数转换为罗马数字

发布时间:2023/04/26 浏览次数:87 分类:Python

本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。

在 Python 中将罗马数字转换为整数

发布时间:2023/04/26 浏览次数:144 分类:Python

本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。

在 Python 中读取 gzip 文件

发布时间:2023/04/26 浏览次数:70 分类:Python

本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。

在 Python 中锁定文件

发布时间:2023/04/26 浏览次数:141 分类:Python

本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等

在 Python 中将 PDF 转换为文本

发布时间:2023/04/26 浏览次数:196 分类:Python

在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。

在 Python 中创建临时文件

发布时间:2023/04/26 浏览次数:53 分类:Python

本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便