Python元组与字典核心特性及常用方法详解

Dylan
Dylan
发布时间:2026-10-13| 1人浏览过
原创

本文详细解析Python中元组(Tuple)与字典(Dict)的核心特性。重点阐述元组元素指向内存地址不变的“不可变”本质,以及字典作为映射类型对键不可变性的要求。文章涵盖字典的多种创建方式、生成式用法及get、pop、update等常用内置方法,帮助开发者掌握高效的数据处理技巧。

前言

本文旨在梳理Python数据类型中元组(Tuple)和字典(Dict)的关键概念,并介绍部分常用的内置方法。以下内容将逐一展开详细解析。

元组 Tuple

核心特性:元组内部的数据元素在创建后不可被修改。

单元素元组的定义方式:T = (1,),注意末尾的逗号。

>>> T=(1,)
>>> type(T)
<type 'tuple'>

看似“可变”的特殊元组现象解析

>>> T=(1,2,3,[1,2,3])
>>> T[3][2] = 'vimiix'
>>> T
(1, 2, 3, [1, 2, 'vimiix'])

表面上看元组内容发生了变化,实际上变化的是元组内包含的列表 [1, 2, 3] 中的元素。该列表在元组 T 中的内存地址始终保持不变。

结论:元组的“不可变”是指其元素所指向的内存地址固定不变。若元组元素本身包含可变对象(如列表),则可通过该可变对象修改其内容,但这不改变元组结构的稳定性。

字典 Dict

核心特性:

1. 字典是Python中唯一的映射数据类型。

2. 字典的键(KEY)必须是不可变对象。这是因为字典底层通过Hash算法存储数据,Hash值由键计算得出。若键可变,将导致存储位置混乱,引发数据错误。

>>> D = {1:3,'vimiix':88}
>>> type(D)
<type 'dict'>
>>> D={[1,2,3]:100}
Traceback (most recent call last):
 File "<pyshell#15>", line 1, in <module>
 D={[1,2,3]:100}
TypeError: unhashable type: 'list' (这里提示list是不能被Hash计算的数据类型,因为list是可变的数据类型)
>>>

上述错误示例表明,字典的键只能使用不可变对象(元组可以作为键),但对字典的值(Value)没有此限制。

语法格式:键值对之间使用冒号“:”分隔,各键值对之间使用逗号“,”分隔,整体由花括号“{}”包裹。

字典中的键值对无序排列,因此无法通过索引访问,必须通过键来获取对应的值。

补充说明:若在定义时出现重复的键,最终存储时会保留最后一个定义的键值对。

>>> D= {1:2,1:3}
>>> D
{1: 3}

创建与访问方法

第一种创建方式:直接通过花括号包含键值对进行创建。

第二种创建方式:利用内置函数dict()进行创建。需注意,dict()括号内只能接收一个参数,需将所有键值对封装在该参数中。

(1)示例说明

>>> D =dict((1,2),(3,4),(5,6))
Traceback (most recent call last):
 File "<pyshell#20>", line 1, in <module>
 D =dict((1,2),(3,4),(5,6))
TypeError: dict expected at most 1 arguments, got 3
>>> D =dict(((1,2),(3,4),(5,6)))
>>> D
{1: 2, 3: 4, 5: 6}

(2)支持指定关键字参数进行创建

>>> D=dict(vimiix = 'VIMIIX')
>>> D
{'vimiix': 'VIMIIX'}

注意:此处的小写字符串‘vimiix'作为关键字参数时不可加单引号,否则会导致报错。

(3)dict的内置方法 .fromkeys 接收两个参数

>>> D = dict.fromkeys((1,'vimiix'),('common','value'))
>>> D
{1: ('common', 'value'), 'vimiix': ('common', 'value')}
>>>

在实际生产环境中,通常使用字典生成式来创建字典,即根据现有数据动态生成对应的键值对,这样更具实际意义。

字典生成式示例:

>>> L1 = [1,2,3]
>>> L2 = ['a','v','vimiix']
>>> D={a:b for a in L1 for b in L2}
>>> D
{1: 'vimiix', 2: 'vimiix', 3: 'vimiix'}

上述示例仅为生成式的演示,并非最优解,后续需进一步学习如何生成一一对应的键值对。

字典的内置方法详解:

get() :

获取键所对应的值。若未找到该键,返回None;若找到,则返回对应的值。

pop(key) :

弹出key对应的值,默认弹出最后一个插入的键值对。

popitem() :

随机返回并删除字典中的一对键和值(项)。由于字典是无序的,不存在所谓的“最后一项”或固定顺序。在工作场景中,若需逐一删除项,使用popitem()方法效率较高。

update() :

更新或新增键值对(若键存在则修改,不存在则添加)。

>>> D.update({'newitem':'update'})
>>> D
{'newitem': 'update', 1: 'vimiix', 2: 'vimiix', 3: 'vimiix'}

总结

以上就是本文的全部内容,希望这些内容能对您的学习或工作有所帮助。如有任何疑问,欢迎留言交流,感谢大家对本站的支持。

相关标签:

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

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 算法库。