news 2026/4/18 15:55:53

Python元组类型及字典类型介绍和基本用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python元组类型及字典类型介绍和基本用法

Python 中的元组(tuple)字典(dict)是两种非常核心且常用的内置数据类型。下面用清晰、结构化的方式给你介绍它们的定义、特点和最常用的基本用法(基于 Python 3.12+ 最新特性,2026 年视角无重大语法变化)。

1. 元组(tuple)

核心特点
  • 有序(有索引,从 0 开始)
  • 不可变(immutable):创建后不能增删改元素(但如果元素本身是可变对象如 list,里面的内容仍可改)
  • 允许重复元素
  • 用小括号()表示(最常见写法)
创建方式
# 常用写法t1=(1,2,3)t2=10,20,30# 括号可以省略(推荐只在简单场景省略)t3=()# 空元组t4=(88,)# 只有一个元素的元组,必须加逗号!否则会被认为是普通括号t5=tuple([1,2,3])# 从可迭代对象转换t6=tuple("hello")# ('h','e','l','l','o')t7=1,# (1,) 单元素也必须加逗号

最容易犯错的点

a=(5)# 这是 int 5,不是 tuple!b=(5,)# 这才是只有一个元素的 tuple
基本操作
t=(10,20,30,40,50,20)# 1. 取值 / 切片(和列表一样)print(t[0])# 10print(t[-1])# 50(倒数第一个)print(t[1:4])# (20, 30, 40)print(t[::2])# (10, 30, 50) 步长2# 2. 查找print(t.index(20))# 1 (返回第一个匹配的索引)print(t.count(20))# 2 (出现次数)# 3. 长度print(len(t))# 6# 4. 成员判断print(30int)# Trueprint(99notint)# True# 5. 拆包(非常常用!)a,b,c=(100,200,300)# a=100, b=200, c=300x,*y,z=(1,2,3,4,5)# x=1, y=[2,3,4], z=5 (* 收集多余元素)print(x,y,z)# 1 [2, 3, 4] 5
元组 vs 列表 对比(面试/工作中常问)
特性tuple(元组)list(列表)
是否可变不可变可变
性能更快(内存更省)稍慢
安全性更高(数据不变)可被意外修改
典型用途固定配置、函数多返回值、作为 dict 的 key需要增删改的场景
可哈希是(可做 dict key / set 元素)

2. 字典(dict)

核心特点(Python 3.7+ 之后)
  • 无序 → 有序:3.7 起插入顺序保证有序(最重要变化!)
  • 键值对(key-value)存储
  • 键必须唯一键必须可哈希(不可变类型:str、int、float、tuple、frozenset 等)
  • 值可以是任意类型
  • 大括号{}表示
创建方式
# 最常用d1={"name":"Alice","age":18,"city":"Shanghai"}# 空字典d2={}d3=dict()# 从键值对列表/元组创建d4=dict([("a",1),("b",2)])d5=dict(name="Bob",score=95,city="Beijing")# 关键字参数方式# 字典推导式(很常用)d6={i:i**2foriinrange(5)}# {0:0, 1:1, 2:4, 3:9, 4:16}
基本操作(最常用写法)
student={"name":"小明","age":20,"score":88}# 1. 取值(三种方式)print(student["name"])# 小明print(student.get("age"))# 20print(student.get("gender","未知"))# 未知(键不存在返回默认值)# 2. 新增 / 修改student["gender"]="男"# 新增student["score"]=95# 修改student.setdefault("class","一班")# 如果键不存在则添加,有则不动# 3. 删除delstudent["age"]# 删除指定键student.pop("score")# 删除并返回被删除的值student.pop("height",None)# 键不存在不报错student.clear()# 清空整个字典# 4. 判断键是否存在print("name"instudent)# True / Falseprint("height"notinstudent)# True# 5. 获取所有键/值/键值对print(student.keys())# dict_keys([...])print(student.values())# dict_values([...])print(student.items())# dict_items([('name','小明'), ...])# 6. 遍历(最常用三种方式)forkinstudent:print(k,student[k])fork,vinstudent.items():print(f"{k}{v}")# 7. 更新(合并字典)d1={"a":1,"b":2}d2={"b":99,"c":3}d1.update(d2)# d1 变成 {'a':1, 'b':99, 'c':3}
Python 3.9+ 新增好用的运算符(非常推荐)
d1={"a":1,"b":2}d2={"b":3,"c":4}# 合并(不修改原字典)d3=d1|d2# {'a':1, 'b':3, 'c':4}# 原地更新d1|=d2# d1 变成合并后的结果

总结一句话对比

  • 元组 tuple:像不可变的列表,主要用于固定、不变的数据集合、函数返回多个值、做字典的 key
  • 字典 dict:键值映射神器,查找速度极快(接近 O(1)),现代 Python 项目中使用频率最高的数据结构之一

如果你正在学 Python,建议优先熟练掌握
元组拆包 + 字典的 get()/setdefault()/items() 遍历 + 字典推导式 + | 合并运算符

有哪部分还想看更详细的示例(比如嵌套、排序、defaultdict、Counter 等进阶用法)?直接告诉我~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 11:07:15

GetQzonehistory终极教程:如何完整备份QQ空间所有历史说说

GetQzonehistory终极教程:如何完整备份QQ空间所有历史说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 想要永久保存QQ空间那些珍贵的青春回忆吗?GetQzonehis…

作者头像 李华
网站建设 2026/4/18 8:55:46

ncmppGui极速转换:3分钟解锁NCM音乐文件

ncmppGui极速转换:3分钟解锁NCM音乐文件 【免费下载链接】ncmppGui 一个使用C编写的转换ncm文件的GUI工具 项目地址: https://gitcode.com/gh_mirrors/nc/ncmppGui 你是否曾经遇到过下载的音乐文件无法在普通播放器中播放的困扰?ncmppGui作为一款…

作者头像 李华
网站建设 2026/4/18 7:22:22

BilibiliDown音频提取完全攻略:打造个人高品质音乐库

BilibiliDown音频提取完全攻略:打造个人高品质音乐库 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi…

作者头像 李华
网站建设 2026/4/18 8:48:57

【Docker+Python避坑手册】:为什么你的脚本不输出?这6个关键点决定成败

第一章:Docker中Python脚本无输出的常见现象与影响在使用 Docker 容器运行 Python 脚本时,开发者常遇到脚本执行后无任何输出的情况。这种现象不仅阻碍了调试流程,还可能导致生产环境中关键任务失败却无法及时察觉。常见表现形式 容器正常启动…

作者头像 李华
网站建设 2026/4/18 11:05:43

SteamDeck双系统终极指南:用rEFInd实现完美启动管理

SteamDeck双系统终极指南:用rEFInd实现完美启动管理 【免费下载链接】SteamDeck_rEFInd Simple rEFInd install script for the Steam Deck (with GUI customization) 项目地址: https://gitcode.com/gh_mirrors/st/SteamDeck_rEFInd 还在为Steam Deck上复杂…

作者头像 李华
网站建设 2026/4/18 8:47:30

Android金融图表终极指南:从零构建高性能K线应用

Android金融图表终极指南:从零构建高性能K线应用 【免费下载链接】lightweight-charts Performant financial charts built with HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts 在移动金融应用开发中,数据可视化…

作者头像 李华