Python字典Key的类型限制与不可变要求详解

桃夭
桃夭
发布时间:2026-10-14| 3人浏览过
原创

本文详细解析Python字典Key的类型限制。字典Value可存储任意类型,但Key必须为不可变类型(如字符串、数字、不含可变元素的元组)。Key的唯一性由__hash__方法决定,List、Dict、Set等可变类型不能作为Key。文章通过代码示例与官方文档说明,帮助开发者避免哈希冲突与类型错误。

Python字典Key的基本类型限制

在Python中,字典的键(Key)不能是可变类型。虽然字典可以存储任意类型的对象,且其值(Value)可以是任何数据类型,但键必须属于不可变类型,例如字符串、数字或元组。其基本语法格式为:【d = {key1 : value1, key2 : value2}】。

字典是一种可变容器模型,能够存储任意类型的数据对象。

字典中的每个键值对(key=>value)使用冒号(:)进行分隔,各键值对之间使用逗号(,)分隔,整个字典内容包含在花括号({})中,具体格式如下所示:


d = {key1 : value1, key2 : value2 }

字典的键必须是唯一的,但值不必唯一。

值可以取任何数据类型,但键必须是不可变的,例如字符串、数字或元组。

具体代码实现如下:


dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

内容扩展说明:

可作为字典Key的对象类型详解

Python中字典的Key都可以是什么类型?

答:一个对象能否作为字典的Key,取决于其是否具备__hash__方法。因此,在Python所有内置类型中,除了list、dict、set以及内部至少包含上述三种可变类型之一的tuple之外,其余对象均可作为Key。

例如:数值、字符串、完全不可变的元组、函数(内建或自定义)、类(内建或自定义)、方法、包等均可作为Key,尽管部分类型的实际使用意义不大。需要注意的是数值型,因为两个不同的相等数字(如1和1.0)可能具有相同的哈希值。

官方文档与哈希机制解释

原理解释:

代码版本:3.6.3;文档版本:3.6.6

Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys. Tuples can be used as keys if they contain only strings, numbers, or tuples; if a tuple contains any mutable object either directly or indirectly, it cannot be used as a key. You can't use lists as keys, since lists can be modified in place using index assignments, slice assignments, or methods like append()and extend().

字典的Key可以是任意不可变类型。需特别注意,当使用tuple元组作为Key时,该元组中不能以任何方式包含可变对象。

至此,关于Python字典Key类型限制的文章介绍完毕。如需了解更多Python字典Key相关类型内容,请搜索本站历史文章或继续浏览相关文章,感谢支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。