应该在 Python 中使用 None 作为字典键吗
None 可以用作 Python 中的字典键,因为它是可哈希对象。 但是,如果必须将字典转换为 JSON,则应避免使用 None 作为字典键,因为 JSON 对象中的所有键都必须是字符串。
my_dict = {'name': 'Alice', None: 30}
print(my_dict[None]) # 👉️ 30
print(None in my_dict) # 👉️ True
Python 中的大多数不可变内置对象都是可散列的,而可变对象是不可散列的。
如果一个对象是可散列的,那么它可以用作字典中的键和集合中的元素,因为这些数据结构在内部使用散列值。
可哈希对象包括 - None 、str 、int 、bool 、tuple 、frozenset。
不可散列的对象包括 - list 、dict 、set。
请注意
,元组和 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}
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])
这就是为什么当你必须使用 json 模块时,你通常应该避免使用 None 作为字典键,因为它比它值得的麻烦更多。
相关文章
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串
在 Python Pandas 中使用 str.split 将字符串拆分为两个列表列
发布时间:2024/04/24 浏览次数:1124 分类:Python
-
本教程介绍如何使用 pandas str.split() 函数将字符串拆分为两个列表列。
在 Pandas 中将 Timedelta 转换为 Int
发布时间:2024/04/23 浏览次数:231 分类:Python
-
可以使用 Pandas 中的 dt 属性将 timedelta 转换为整数。
Python 中的 Pandas 插入方法
发布时间:2024/04/23 浏览次数:112 分类:Python
-
本教程介绍了如何在 Pandas DataFrame 中使用 insert 方法在 DataFrame 中插入一列。
使用 Python 将 Pandas DataFrame 保存为 HTML
发布时间:2024/04/21 浏览次数:106 分类:Python
-
本教程演示如何将 Pandas DataFrame 转换为 Python 中的 HTML 表格。
如何将 Python 字典转换为 Pandas DataFrame
发布时间:2024/04/20 浏览次数:73 分类:Python
-
本教程演示如何将 python 字典转换为 Pandas DataFrame,例如使用 Pandas DataFrame 构造函数或 from_dict 方法。
如何在 Pandas 中将 DataFrame 列转换为日期时间
发布时间:2024/04/20 浏览次数:101 分类:Python
-
本文介绍如何将 Pandas DataFrame 列转换为 Python 日期时间。