当前位置: 首页 > news >正文

第五章:Python 数据结构:列表、元组与字典(二)

Python 列表、元组与字典详解:从基础到实战

在这里插入图片描述

在这里插入图片描述


系列文章目录

第一章 Python语言基础与应用领域
第二章 Python 开发环境搭建与工具配置(一)
第二章 Python开发环境搭建与工具配置(二)
第三章:Python基本语法规则详解(一)
第三章:Python基本语法规则详解(二)


文章目录

  • Python 列表、元组与字典详解:从基础到实战
  • 系列文章目录
    • 三、字典(Dictionary):键值对存储结构
      • 3.1 字典的定义与特点
      • 3.2 字典的常用操作
      • 3.3 字典的键与值规则
      • 3.4 常见错误及解决
    • 四、实战练习
      • 练习 1:列表操作
      • 练习 2:学生信息管理
    • 五、总结


三、字典(Dictionary):键值对存储结构

3.1 字典的定义与特点

字典是可变、无序的键值对(key-value)集合,通过键快速访问值,用花括号 {} 定义:

empty_dict = {}  # 空字典
person = {"name": "Alice","age": 30,"city": "New York"
}
mixed_dict = {1: "one", "two": 2, 3.14: "pi"}  # 不同类型的键
nested_dict = {  # 嵌套字典"user1": {"name": "Alice", "age": 30},"user2": {"name": "Bob", "age": 25}
}# 用 dict() 函数创建
person = dict(name="Alice", age=30, city="New York")

字典的核心特点:

  • 键值对结构:通过键(key)访问值(value)

  • 无序性:键值对没有固定顺序(Python 3.7+ 保留插入顺序)

  • 键唯一性:同一个字典中键不能重复(重复会覆盖)

  • 高效查找:基于哈希表实现,查找速度极快

3.2 字典的常用操作

访问值

person = {"name": "Alice", "age": 30}
print(person["name"])  # Alice(直接访问,键不存在会报错)
print(person.get("age"))  # 30(get方法,键不存在返回None)
print(person.get("city", "Unknown"))  # Unknown(指定默认值)

添加 / 修改键值对

person = {"name": "Alice"}
person["age"] = 30  # 添加新键值对
person["name"] = "Bob"  # 修改已有键的值

删除操作

person = {"name": "Alice", "age": 30, "city": "New York"}
del person["city"]  # 删除指定键
age = person.pop("age")  # 删除并返回值
key, value = person.popitem()  # 删除最后一个键值对(3.7+)

遍历字典

person = {"name": "Alice", "age": 30, "city": "New York"}# 遍历键
for key in person:print(key)  # name, age, city# 遍历值
for value in person.values():print(value)  # Alice, 30, New York# 遍历键值对
for key, value in person.items():print(f"{key}: {value}")

3.3 字典的键与值规则

键的要求

  • 必须是不可变类型(字符串、数字、元组等)

  • 不能是列表(列表是可变的)

  • 必须唯一(重复键会被后面的覆盖)

valid_dict = {(1, 2): "tuple_key"}  # 合法(元组作为键)
invalid_dict = {[1, 2]: "list_key"}  # 错误(列表不能作为键)

值的特点

  • 可以是任意类型(包括列表、字典等可变类型)

  • 可以重复

  • 可变值可以被修改

my_dict = {"hobbies": ["reading", "music"]}
my_dict["hobbies"].append("sports")  # 可以修改列表值

3.4 常见错误及解决

  1. 访问不存在的键
# 错误示例
person = {"name": "Alice"}
print(person["age"])  # KeyError
# 解决:用 get() 方法
print(person.get("age", 0))  # 0(指定默认值)
  1. 混淆键和值
# 错误示例
person = {"name": "Alice"}
print(person["Alice"])  # 想用值查键,会报错
# 解决:如果需要反向查找,需手动实现

四、实战练习

练习 1:列表操作

实现功能:创建 1-5 的列表,添加 6,在索引 2 插入 7,移除 3,排序后反转

# 代码实现
nums = [1, 2, 3, 4, 5]
nums.append(6)
nums.insert(2, 7)
nums.remove(3)
nums.sort()
nums.reverse()
print(nums)  # 输出:[7, 6, 5, 4, 2, 1]

练习 2:学生信息管理

用字典实现学生信息的增删改查

# 代码实现
students = {}
# 添加信息
students["Alice"] = 20
students["Bob"] = 21
# 输出所有学生
for name, age in students.items():print(f"{name}: {age}")
# 修改信息
students["Alice"] = 22
# 删除信息
del students["Bob"]
print(students)  # 输出:{'Alice': 22}

五、总结

  • 列表:可变有序集合,适合需要频繁修改的数据

  • 元组:不可变有序集合,适合存储固定数据或作为字典键

  • 字典:键值对结构,适合通过唯一标识快速查找数据

选择合适的数据结构能让代码更高效、更易维护。建议多做练习,熟练掌握它们的操作方法和应用场景。

下一篇将讲解集合与推导式,敬请关注!如果有疑问欢迎在评论区交流~
在这里插入图片描述


文章转载自:

http://dXDcEcEv.nkjkh.cn
http://yCWoQQBu.nkjkh.cn
http://tlYlkv5g.nkjkh.cn
http://hPg6atWM.nkjkh.cn
http://Y7UQjmTD.nkjkh.cn
http://LhYjHXkA.nkjkh.cn
http://z8FqQno5.nkjkh.cn
http://M8yJuWAB.nkjkh.cn
http://ATpKbaqh.nkjkh.cn
http://IaG2HpWc.nkjkh.cn
http://Qoj9L2Xv.nkjkh.cn
http://mnQ65UDV.nkjkh.cn
http://5tW3ZrLQ.nkjkh.cn
http://l5U8Al86.nkjkh.cn
http://VpV9Ak75.nkjkh.cn
http://ckvMZ7lU.nkjkh.cn
http://qBetuvlA.nkjkh.cn
http://SJgFPbJY.nkjkh.cn
http://Z34tsNIr.nkjkh.cn
http://O42gpfuP.nkjkh.cn
http://JQkxdcpE.nkjkh.cn
http://W1VX3sj4.nkjkh.cn
http://CC1LB02w.nkjkh.cn
http://JMWopVRa.nkjkh.cn
http://pHdKRvbg.nkjkh.cn
http://mJcVBfSq.nkjkh.cn
http://S2KRw0aX.nkjkh.cn
http://JvMblKlJ.nkjkh.cn
http://Y6xUiOGw.nkjkh.cn
http://MiMa1tkH.nkjkh.cn
http://www.dtcms.com/a/378504.html

相关文章:

  • Flow Matching Guide and Code(3)
  • 内存泄漏一些事
  • 嵌入式学习day47-硬件-imx6ul-LED、Beep
  • 【数据结构】队列详解
  • C++/QT
  • GPT 系列论文1-2 两阶段半监督 + zero-shot prompt
  • 昆山精密机械公司8个Solidworks共用一台服务器
  • MasterGo钢笔Pen
  • 【算法--链表】143.重排链表--通俗讲解
  • 数据库的回表
  • 《Learning Langchain》阅读笔记13-Agent(1):Agent Architecture
  • MySQL索引(二):覆盖索引、最左前缀原则与索引下推详解
  • 【WS63】星闪开发资源整理
  • 守住矿山 “生命线”!QB800系列在线绝缘监测在矿用提升机电传系统应用方案
  • Altium Designer(AD)原理图更新PCB后所有器件变绿解决方案
  • DIFY 项目中通过 Makefile 调用 Dockerfile 并使用 sudo make build-web 命令构建 web 镜像的方法和注意事项
  • 联合索引最左前缀原则原理索引下推
  • 平衡车 -- 速度环
  • BPE算法深度解析:从零到一构建语言模型的词元化引擎
  • DIPMARK:一种隐蔽、高效且具备鲁棒性的大语言模型水印技术
  • mysql多表联查
  • 审美积累 | 移动端仪表盘
  • 面阵结构光3D相机三维坐标计算
  • 【大前端++】几大特征
  • 【持续更新】高质量的项目开发过程(C++)(前后端)
  • 淘宝商品视频批量自动化获取的常见渠道分享
  • ABAP 将多层json逐层解析转成内表
  • 一样的糖果
  • linux x86_64中打包qt
  • Windows 10 22H2 64位 【原版+优化版、版本号:19045.6332】