Lazy loaded image
📘📘 像查电话簿一样玩转键值对
字数 1833阅读时长 5 分钟
2025-2-21
2025-2-21

📘 Python字典操作手册:像查电话簿一样玩转键值对

 
(附:表情包护体,妈妈再也不用担心我学编程啦!)
💡
欢迎您在底部评论区留言,一起交流~

 

🎯 灵魂拷问:为什么需要字典?

假设你要存全班同学的成绩:
  • 用列表:只能按[张三成绩, 李四成绩...],找成绩得记位置❌
  • 用字典:{"张三":95, "李四":88},直接名字查分✅
结论:字典=现实中的电话簿,通过名字(键)快速找到号码(值)

🔑 字典基础:创建与访问

1️⃣ 创建字典(两种方式)

2️⃣ 访问值:用钥匙(键)开锁(值)


🛠️ 常用操作六连击

① 增/改:一键到位

② 删:三招任选

③ 查:键、值、键值对

④ 合并字典:update()

⑤ 字典嵌套:套娃预警 🪆


Q&A:新手的经典困惑

Q1:字典和列表最大的区别是?

A:列表靠位置找人(索引),字典靠名字找人(键)!就像查通讯录不需要记电话号码在第几行~😉

Q2:字典的键可以是列表吗?

A:达咩!🚫 键必须是不可变类型(数字、字符串、元组)。列表会变,就像不能用会融化的冰块当钥匙!❄️

Q3:为什么不能用while循环遍历字典?

A:字典本身是一个无序集合(Python 3.7+默认有序,但逻辑上仍建议视其为无序,主要是字典无下标,while循环不方便索引)。使用for循环可以直接遍历键或键值对,而while循环需要手动维护一个计数器或其他条件,容易出错且不直观。比如:
相比之下,for循环更简洁优雅:

Q4:字典的值可以是任何类型吗?

A:是的!值可以是任意类型,包括列表、字典等复杂数据结构。例如:

📌 总结表:字典核心知识点

特性/操作
说明
示例
键值对结构
{键:值},键唯一且不可变
{"name": "小明"}
访问元素
[键]get()方法
dict["age"]
增/改元素
直接赋值
dict["new_key"] = 10
删除元素
delpop()clear()
del dict["key"]
遍历
keys(), values(), items()
for k, v in dict.items()
嵌套结构
字典中存字典/列表
{"data": {"id":1}}
键的要求
必须是不可变类型
数字、字符串、元组
值的要求
可以是任意类型
列表、字典、函数等

字典的特点总结

  1. 高效查找:字典通过键(key)直接定位到对应的值(value),查找效率极高,时间复杂度接近O(1)。
  1. 键唯一性:字典中的键是唯一的,如果插入相同的键,后面的值会覆盖前面的值。
  1. 键不可变:字典的键必须是不可变类型(如字符串、数字、元组),因为字典内部通过哈希算法来存储键值对,只有不可变类型才能保证哈希值的稳定性。
  1. 值多样性:字典的值可以是任意类型,包括列表、字典、函数等复杂数据结构,支持灵活的数据组织形式。
  1. 无序性:虽然从Python 3.7开始,字典在实现上保持了插入顺序,但从逻辑上我们仍然应该将其视为无序集合。
  1. 动态可变:字典是可变的,可以随时添加、修改或删除键值对,非常灵活。

✏️ 练习题:巩固你的字典技能

练习1:创建一个字典,存储学生信息

要求:
  • 学生信息包括姓名、年龄、成绩
  • 使用字典嵌套的方式存储至少两名学生的信息
示例代码
讲解
这里我们使用了字典嵌套的方式,每个学生的姓名作为外层字典的键,对应的值是一个内层字典,包含该学生的详细信息。

练习2:遍历字典并打印所有学生信息

要求:
  • 遍历字典,打印每个学生的姓名、年龄和成绩
示例代码
讲解
通过items()方法可以同时获取键和值,方便地进行遍历。info['年龄']info['成绩']分别访问内层字典的值。

练习3:修改某个学生的成绩

要求:
  • 将“小明”的成绩改为95
示例代码
讲解
通过两层键访问嵌套字典的值,并对其进行修改。

练习4:新增一名学生

要求:
  • 新增一名学生“小刚”,年龄为16,成绩为88
示例代码
讲解
直接给字典新增一个键值对即可完成添加操作。

💡 一句话记忆:字典=现实中的查找手册,用直捣黄龙找,操作比列表更“指名道姓”!🎯
(教程结束!现在你已经是“字典小能手”了,快去用代码写个“班级花名册”练手吧~🚀)
上一篇
Python五大“数据容器”全解析
下一篇
Python 字典入门指南

评论
Loading...