当前位置:

首页 > 编程开发 > 一文搞定Python中的字典查值、元组防改与集合去重(进阶必学)

一文搞定Python中的字典查值、元组防改与集合去重(进阶必学)

字典通过键快速查找值,键唯一且不可变;元组创建后不可修改,适合存储固定数据;集合元素无序且唯一,支持并集、交集等数学运算。这三种结构是Python数据处理的核心工具,广泛应用于数据映射、固定数据存储及去重场景。

前言

在前几篇笔记里,我们聊了字符串和列表,它们都属于序列类型。今天开始,咱们来深入看看另外三种核心数据结构:字典、元组和集合。它们各自有独特的性格——字典靠键找值,元组一旦创建就不许变,集合则天生爱去重。掌握了它们,你的Python数据处理能力绝对能上一个台阶。

一文搞定Python中的字典查值、元组防改与集合去重(进阶必学)

  • 字典(dict):通过“键”来查找“值”,就像查字典一样快速。
  • 元组(tuple):与列表类似,但一旦创建就不能修改,适合存储固定数据。
  • 集合(set):无序且元素唯一,支持并集、交集等数学运算。

好,咱们一个一个来拆解。

一、字典(dict)

字典说白了就是键值对(key-value)的映射结构,用大括号 {} 装起来,键和值之间用冒号 : 隔开,键值对之间用逗号 , 分隔。键必须唯一且不可变(通常用字符串、数字),值可以是任意类型——灵活得很。

为什么需要字典

拿列表来对比一下:列表只能通过下标访问元素,你根本看不出那个数字代表什么含义;而字典用有意义的键来取值,代码自解释性直接拉满。

# 列表方式(无法直接看出 98 是什么成绩)
list1 = ["语文", 98, "数学", 96, "英语", 100]
print(list1[1])   # 98

# 字典方式(一目了然)
dict1 = {"语文": 98, "数学": 96, "英语": 100}
print(dict1["语文"])   # 98

字典的创建

# 方式1:大括号直接创建
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 方式2:使用 dict() 构造函数
person2 = dict(name='Bob', age=30)

# 方式3:两个列表拼成字典(使用 zip)
keys = ['name', 'age', 'city']
values = ['charlie', 35, 'chicago']
dict3 = dict(zip(keys, values))
print(dict3)   # {'name': 'charlie', 'age': 35, 'city': 'chicago'}

获取字典元素

print(person['name'])        # Alice(如果键不存在会报错 KeyError)
print(person.get('age'))     # 25(键不存在返回 None,不报错)

修改与添加元素

# 修改已存在的键
person['age'] = 26

# 添加新键值对(直接赋值不存在的键)
person['email'] = 'alice@example.com'
print(person)   # {'name': 'Alice', 'age': 26, 'city': 'New York', 'email': 'alice@example.com'}

删除元素

# del 语句
del person['city']

# pop() 方法:删除并返回对应的值
email = person.pop('email')
print(email)   # alice@example.com

字典常用方法

方法作用
keys()返回所有键(可遍历)
values()返回所有值
items()返回所有键值对(元组形式)
get(key)安全获取值,不存在返回 None
pop(key)删除指定键并返回值
update(other)用另一个字典更新当前字典
copy()浅拷贝

综合练习:个人信息管理

# 1. 创建字典
person = {'name': 'Da vid', 'age': 40, '职业': '工程师'}

# 2. 获取名字
print("Name:", person['name'])

# 3. 修改年龄
person['age'] = 41
print("Updated Age:", person['age'])

# 4. 添加邮箱
person['email'] = 'da vid@example.com'
print("Email:", person['email'])

# 5. 删除职业
del person['职业']
print("删除后的个人信息:", person)

# 6. 批量更新
person.update({'name': 'Da vid Smith', '城市': '旧金山'})
print("更新后的信息:", person)

二、元组(tuple)

元组是不可变的序列,用圆括号 () 表示。一旦创建,你就没法再添加、删除或修改里面的元素了。这种“死板”的特性,恰恰让它适合存储坐标、日期这类固定不变的数据。

创建元组

# 包含多个元素
tuple1 = (1, 2, 3)

# 空元组
tuple2 = ()

# 单个元素的元组(注意逗号!)
tuple3 = (4,)   # 如果不加逗号,会被当作整数 4
print(type(tuple3))   # 

访问与切片(与列表类似)

tuple5 = (12, 13, 14, 15, 16)
print(tuple5[1])      # 13
print(tuple5[1:4])    # (13, 14, 15)
print(len(tuple5))    # 5

不可变性(重点)

tuple7 = (20, 21, 22)
# tuple7[0] = 23   # 会引发 TypeError: 'tuple' object does not support item assignment

其他操作

# 将列表转换为元组
list_to_tuple = tuple([6, 7, 8, 9])
print(list_to_tuple)   # (6, 7, 8, 9)

三、集合(set)

集合是无序、元素唯一的数据结构,用大括号 {} 表示,但不能是空的——空 {} 会被当成字典。集合最常用的场景就是去重和集合运算(并集、交集、差集)。

创建集合

# 使用大括号
set1 = {1, 2, 3, 4, 5}

# 使用 set() 函数(可去重)
set2 = set([1, 2, 2, 3, 4, 4, 5])   # {1, 2, 3, 4, 5}

# 空集合(必须用 set(),不能用 {})
empty_set = set()

集合的基本操作

# 添加元素
set1.add(6)

# 删除元素(如果元素不存在会报错 KeyError)
set1.remove(3)

# 清空集合
set1.clear()

# 判断元素是否存在
print(4 in set2)   # True

集合的数学运算

setA = {1, 2, 3, 4}
setB = {3, 4, 5, 6}

# 并集(所有元素)
print(setA | setB)   # {1, 2, 3, 4, 5, 6}

# 交集(共同元素)
print(setA & setB)   # {3, 4}

# 差集(在A但不在B)
print(setA - setB)   # {1, 2}

常用方法

方法作用
add(element)添加元素
remove(element)删除元素(不存在则报错)
discard(element)删除元素(不存在不报错)
pop()随机移除并返回一个元素
clear()清空集合

综合练习

setA = {1, 2, 3, 4}
setB = {3, 4, 5, 6}

setA.add(7)
print("添加之后:", setA)   # {1, 2, 3, 4, 7}

setA.remove(2)
print("删除之后:", setA)   # {1, 3, 4, 7}

print("并集:", setA | setB)   # {1, 3, 4, 5, 6, 7}
print("交集:", setA & setB)   # {3, 4}
print("差集:", setA - setB)   # {1, 7}

作业(请先独立完成,再对照答案)

一、单选题

1.下列关于列表下标取值的说法,正确的是( )

  • A. 列表下标只能从 0 开始正向取值,不能反向(如 -1)
  • B. 嵌套列表 l = [1, [2, [3]]] 中,取 3 的写法是 l[1][1][0]
  • C. 列表下标越界不会报错
  • D. 列表 ['a', 'b'] 中,列表为 [2] 会返回空值

2.执行 l = [11,22,33]; l.append(44); l.insert(1,55) 后,列表 l 的结果是( )

  • A. [11,55,22,33,44]
  • B. [55,11,22,33,44]
  • C. [11,22,33,55,44]
  • D. [11,22,55,33,44]

3.字典 d = {'name':'maiya', 'age':18},下列操作错误的是( )

  • A. print(d['name'])
  • B. d['gender'] = '女'
  • C. print(d[0])
  • D. del d['age']

4.关于元组的特性,描述正确的是( )

  • A. 元组支持 append() 函数添加元素
  • B. 元组 (10) 和表示存储一个数据
  • C. 元组支持下标取值,但不支持切片
  • D. 元组一旦定义,内部元素无法修改

5.字典 d = {'a':1, 'b':2, 'a':3},打印 d['a'] 的结果是( )

  • A. 1
  • B. 2
  • C. 3
  • D. 报错

二、编程题

1.定义列表 l = [5, 8, 2, 9, 1, 8],完成以下操作:

  • a. 删除列表中所有的数字 8;
  • b. 在列表末尾添加数字 10;
  • c. 将列表中索引为 2 的元素修改为 7;
  • d. 打印最终的列表。

2.定义字典 student = {'name':'张三', 'score':85, 'gender':'男'},完成以下操作:

  • a. 新增键值对 'age':18;
  • b. 将分数(score)修改为 90;
  • c. 删除性别(gender)键值对;
  • d. 打印字典中所有的键和所有的值。

(选做题)定义嵌套列表 l = ['python', ['ja va', ['c++', 'ja vascript'], 'php'], 'ruby'],通过下标取值提取出 ja vascript 并打印。

作业答案

单选题答案

题号答案解析
1BA:列表支持负下标(如 -1);C:下标越界会报错;D:[2] 越界报错。B:l[1] → [2, [3]],[1] → [3],[0] → 3,正确。
2A初始 [11,22,33];append(44) → [11,22,33,44];insert(1,55) → 在下标1插入55 → [11,55,22,33,44]。
3C字典通过键访问,不能通过整数下标(d[0] 会报错)。
4D元组不可变。A 错误(无 append);B 错误:(10) 是整数,正确单元素元组应为 (10,);C 错误:元组支持切片。
5C字典的键必须唯一,如果重复定义,后面的值会覆盖前面的,所以 'a' 最终为 3。

编程题答案

1. 列表操作

l = [5, 8, 2, 9, 1, 8]

# a. 删除所有 8(使用循环,注意删除时倒序或用 while)
while 8 in l:
    l.remove(8)

# b. 末尾添加 10
l.append(10)

# c. 修改索引 2 的元素为 7
l[2] = 7

# d. 打印
print(l)   # [5, 2, 7, 1, 10]

2. 字典操作

student = {'name': '张三', 'score': 85, 'gender': '男'}

# a. 新增 age
student['age'] = 18

# b. 修改分数
student['score'] = 90

# c. 删除 gender
del student['gender']

# d. 打印所有键和所有值
print("键:", student.keys())
print("值:", student.values())

3. 嵌套列表取值(选做题)

l = ['python', ['ja va', ['c++', 'ja vascript'], 'php'], 'ruby']
# ja vascript 在 l[1][1][1]
print(l[1][1][1])   # ja vascript

总结

这篇笔记把字典、元组、集合的核心知识梳理了一遍:

  • 字典:键值对映射,通过键快速取值。常用操作:增删改查、keys()、values()、items()。
  • 元组:不可变序列,适用于固定数据。注意单元素元组必须加逗号。
  • 集合:无序、元素唯一,支持去重和数学运算(并集 |、交集 &、差集 -)。

这三种数据结构在实际开发中使用频率极高,建议结合练习题多敲几遍,真正内化成自己的技能。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Python
相关文章 更多
大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

langgraph python guide中文入门教程详解
langgraph python guide中文入门教程详解

本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

Windows 安装 Python:从官方入口到虚拟环境的可复现实践
Windows 安装 Python:从官方入口到虚拟环境的可复现实践

面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

Windows系统Python安装教程:下载、勾选PATH及环境变量配置
Windows系统Python安装教程:下载、勾选PATH及环境变量配置

针对Windows初学者的Python安装实战指南。详细讲解如何从Python官网下载匹配架构的安装包,重点演示安装首屏勾选“Add python.exe to PATH”的关键操作,并提供使用python --version和py命令验证环境变量的具体步骤,帮助新手快速搭建开发环境并排查路径问题。

Python安装后怎么打开:使用IDLE或命令行启动解释器
Python安装后怎么打开:使用IDLE或命令行启动解释器

刚在Windows安装好Python却不知道如何启动?本文详细演示如何通过开始菜单找到并打开IDLE集成开发环境,以及如何在PowerShell或命令提示符中使用python和py命令启动交互式解释器、运行.py脚本文件。包含退出解释器的方法及常见启动问题排查,帮助初学者快速验证安装成功并开始编写代码。

了解Python编程领域中最好的就业行业
了解Python编程领域中最好的就业行业

了解Python编程领域中最好的就业行业导语:近年来,Python作为一种易学易用的编程语言,越来越受到企业和开发者的青睐。在Python编程领域中,有许多就业机会,涵盖了各个行业。本文将介绍一些Python编程领域中最好的就业行业,并提供相应的代码示例。数据科学和机器学习数据科学和机器学习是Python编程领域中最热门的行业之一。Python在数据科学和机

python处理csv文件的方法完整实用教程
python处理csv文件的方法完整实用教程

针对Python处理CSV文件时常见的编码报错、内存溢出和数据类型错误,本文对比标准库csv与Pandas库的适用场景,提供可复制的代码示例和因果排查思路,帮助开发者选择最优处理方案。

python字典怎么按值排序用sorted函数实现升降序
python字典怎么按值排序用sorted函数实现升降序

本文介绍如何使用Python的sorted函数对字典按值进行升序和降序排序,结合具体代码示例和应用场景,帮助读者理解排序逻辑及其在数据处理中的实际价值。

python正则匹配修改方法与代码实现教程
python正则匹配修改方法与代码实现教程

深入讲解Python中使用re.sub进行正则匹配与替换的技巧,涵盖基础语法、分组引用及回调函数应用,帮助开发者解决复杂字符串修改需求,提升代码效率与可维护性。

selenium中文安装包下载与安装教程
selenium中文安装包下载与安装教程

详解Selenium在Python环境下的安装步骤,包括使用pip安装库文件、下载对应版本的浏览器驱动以及验证安装是否成功,适合自动化测试初学者参考。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
iMazing macOS版
iMazing macOS版
macOS

iMazing macOS版是一款面向iPhone、iPad和iPod用户的本地设备管理工具,可在Mac上完成增量备份、资料迁移以及照片、信息、音乐、应用和文件的浏览与导出,并支持USB或局域网连接。

Mercalli macOS版
Mercalli macOS版
macOS

Mercalli macOS版是一款面向视频创作者的独立防抖与畸变校正工具,可分析手持、运动相机及无人机素材,修复抖动、果冻效应和鱼眼变形,并以ProRes或H.264等常用格式导出。

Path Finder macOS版
Path Finder macOS版
macOS

Path Finder 是一款面向 macOS 的专业文件管理器,提供双栏浏览、暂存拖放、文件夹比较与同步、批量重命名、文件筛选及空间分析等工具,适合经常整理素材、归档项目或管理大量文件的用户。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

PhpStorm Windows版
PhpStorm Windows版
Windows

PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

PyCharm Windows版
PyCharm Windows版
Windows

PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,