news 2026/9/9 5:36:44

Python 零基础入门第七章:字典 Dict

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 零基础入门第七章:字典 Dict

专栏:Python 零基础全套入门教程 🎯 本章定位:Python 中核心映射数据类型,以键值对存储数据,适合描述对象信息,爬虫、数据分析、接口 JSON 解析都会大量使用字典,是日常开发使用频率极高的数据结构。

✅ 学习目标

  1. 理解字典「键‑值对」存储思想,区分字典和列表的使用场景
  2. 掌握字典创建、访问、新增、修改、删除元素
  3. 熟练使用 keys ()、values ()、items () 遍历字典
  4. 掌握字典嵌套:列表套字典、字典套字典
  5. 熟悉字典常用内置方法,规避键不存在引发的报错

一、字典基础概念

列表是按下标索引取值,有序的数据集合;字典是通过键 (key)来找值 (value),属于映射类型。

字典格式:{键1:值1, 键2:值2, 键3:值3}

  • key(键):必须是不可变类型,常用字符串、数字;键不能重复,重复后面会覆盖前面
  • value(值):可以是任意数据类型,字符串、数字、列表、字典都可以
  • 字典使用大括号{}包裹,元素之间逗号分隔

1.1 创建字典

# 方式1:直接字面量创建 student = { "name": "小明", "age": 16, "gender": "男", "hobby": ["篮球","看书"] } print(student) # 方式2:空字典 empty_dict = {} print(type(empty_dict)) # <class 'dict'> # 方式3:dict()函数创建 person = dict(name="小红", age=15) print(person)

易错点:字典 key 重复,后定义的值覆盖前面

# name重复,最终只会保留后面的值 test_dict = {"name":"张三","name":"李四"} print(test_dict) # {'name': '李四'}

1.2 获取字典中的值

方式 1:字典[键],键不存在直接抛异常报错

student = {"name": "小明", "age":16} print(student["name"]) # 小明 print(student["age"]) # 16 # print(student["score"]) # KeyError,键不存在程序直接崩溃

方式 2:get()方法,推荐开发使用,键不存在返回 None,不会报错

student = {"name": "小明", "age":16} print(student.get("name")) # 键不存在,默认返回None print(student.get("score")) # 可以设置找不到键时的自定义默认值 print(student.get("score",0))

二、字典增删改操作

2.1 添加 / 修改键值对

语法:字典[键] = 值

  • 如果键已经存在:代表修改原有键对应的值
  • 如果键不存在:代表新增一组键值对
student = {"name":"小明","age":16} # 修改已有的key student["age"] = 17 print(student) # 新增key student["gender"] = "男" student["score"] = 90 print(student)

2.2 删除字典元素

  1. del:删除指定键值对;也可以直接删除整个字典对象
student = {"name":"小明","age":16,"gender":"男"} del student["gender"] print(student) # del student # 直接删除字典变量,后续无法访问

2.pop(key):删除指定 key,同时返回被删除的值,key 不存在报错

student = {"name":"小明","age":16} res = student.pop("age") print(res) #16 print(student)

3.clear():清空字典内部所有元素,字典对象保留,变成空字典

student = {"name":"小明","age":16} student.clear() print(student) # {}

三、字典遍历

字典提供 3 个重要方法:

  • .keys()获取全部键
  • .values()获取全部值
  • .items()获取全部键值对元组
student = {"name":"小明","age":16,"gender":"男"} # 遍历所有key for k in student.keys(): print("键:",k) # 遍历所有value for v in student.values(): print("值:",v) # 遍历键和值,最常用 for k,v in student.items(): print(f"{k} : {v}")

拓展:直接 for 循环字典变量本身,默认遍历的是 keys ()

for k in student: print(k)

四、字典嵌套

实际项目经常使用嵌套,分为列表嵌套字典、字典嵌套字典。

4.1 列表里面存放字典,多条对象数据

student_list = [ {"name":"小明","age":16}, {"name":"小红","age":15}, {"name":"小刚","age":17} ] # 遍历取出每一个学生字典 for stu in student_list: print(stu["name"], stu["age"])

4.2 字典里面存放字典

class_info = { "class1":{ "teacher":"张老师", "count":30 }, "class2":{ "teacher":"李老师", "count":32 } } print(class_info["class1"]["teacher"])

五、字典其他常用方法

  1. update()批量合并更新字典
d1 = {"a":1,"b":2} d2 = {"b":99,"c":3} d1.update(d2) print(d1) # {'a': 1, 'b': 99, 'c': 3}

2.in判断 key 是否存在字典中(注意:in 判断的是键,不是值

d = {"name":"小明","age":16} print("name" in d) # True print("小明" in d) # False,判断的是key,不是value # 判断值是否存在需要搭配values() print("小明" in d.values()) # True

六、字典高频易错点总结

  1. key 只能为不可变类型:字符串、数字、元组;列表不可以做字典 key
  2. key 不能重复,重复会发生覆盖
  3. 使用dict[key]取值,key 不存在直接抛出 KeyError,正式代码优先用 get ()
  4. in直接判断字典,判断的是键,不是值;判断值要用in dict.values()
  5. del、pop 区别:pop 可以拿到被删除的数据;del 只做删除操作
  6. 字典嵌套访问,层级不要写太多,可读性会变差

错误示例:

# 列表不能作为key # test = {[1,2]:"abc"} # 报错

📝本章实战习题

基础题

  1. 创建一个字典描述书本信息:书名、作者、价格;分别使用 [] 和 get 两种方式取出书名。
  2. 定义字典car = {"brand":"比亚迪","color":"白色"},新增键值对"price":150000;修改颜色为 “灰色”;删除 brand 键。
  3. 遍历字典user = {"id":1001,"username":"admin","password":"123456"},同时打印所有键和值。

进阶题

  1. 有学生列表:
students = [ {"name":"张三","score":88}, {"name":"李四","score":59}, {"name":"王五","score":92} ]

遍历列表,打印分数大于等于 60 分的学生姓名。

  1. 字典info = {"city":"深圳","area":"龙华"},判断city这个键是否存在字典中,如果存在打印城市的值,不存在打印 “无城市信息”。

思考题

  1. 写程序合并两个字典:
dict_a = {"name":"test","age":20} dict_b = {"age":21,"gender":"男"}

合并后,重复键 age 取 dict_b 的值。

✅参考答案

#习题1 book = {"title":"Python入门","author":"讲师","price":59} print(book["title"]) print(book.get("title")) #习题2 car = {"brand":"比亚迪","color":"白色"} car["price"] = 150000 car["color"] = "灰色" del car["brand"] print(car) #习题3 user = {"id":1001,"username":"admin","password":"123456"} for k,v in user.items(): print(k, v) #习题4 students = [ {"name":"张三","score":88}, {"name":"李四","score":59}, {"name":"王五","score":92} ] for s in students: if s["score"] >= 60: print(s["name"]) #习题5 info = {"city":"深圳","area":"龙华"} if "city" in info: print(info.get("city")) else: print("无城市信息") #习题6 dict_a = {"name":"test","age":20} dict_b = {"age":21,"gender":"男"} dict_a.update(dict_b) print(dict_a)

💖点赞 + 收藏 + 关注,持续更新 Python 零基础全套教程

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

DFS与状压DP实战:蓝桥杯矩阵计数问题的算法精解

1. 项目概述&#xff1a;从一道国赛真题看DFS的实战应用最近在复盘蓝桥杯国赛的历年真题&#xff0c;发现“矩阵计数”这类题目出现的频率相当高&#xff0c;而且常常作为区分选手能力的关键题。它不像一些纯模拟题那样直接&#xff0c;也不像动态规划那样有固定的套路模板&…

作者头像 李华
网站建设 2026/8/31 3:16:54

2026年电商AI客服选型验收清单:中小团队技术负责人的六维评估与压测方法

核心摘要 「选哪家」的问题对技术负责人来说应翻译成「怎么验收」——六个维度足以把营销话术和真实水位分开。六维清单&#xff1a;平台接入覆盖、知识新鲜度、首响延迟、并发弹性、转人工链路、数据安全。每个维度给出可执行的压测或验证方法&#xff0c;全部可在两周试用期内…

作者头像 李华
网站建设 2026/8/31 4:49:03

淘天2027届校招AI岗占九成,应届生技术栈与准备指南

“淘天开启2027届应届生招聘&#xff1a;AI技术类岗位占比超9成”——这则招聘消息在技术社区传开后&#xff0c;很多人第一反应是“2027届是不是写错了”。没有写错。这里的2027届&#xff0c;指的是2027年毕业的在校生&#xff0c;也就是目前正在读大二、研一&#xff0c;甚至…

作者头像 李华
网站建设 2026/8/31 1:31:37

蓝桥杯递增数列解题:从矩阵DP到博弈论,掌握算法竞赛核心思维

1. 从“递增数列”到“蓝桥杯”的实战思维一看到“蓝桥杯 递增数列”这个标题&#xff0c;很多刚接触算法竞赛的同学可能会下意识地去想&#xff1a;这大概又是一道关于数组排序或者动态规划找最长递增子序列的题目吧&#xff1f;毕竟“递增”和“数列”这两个词太常见了。但如…

作者头像 李华
网站建设 2026/8/31 12:37:51

MATLAB数学建模速成:两天掌握核心编程与实战技巧

1. 项目概述&#xff1a;从零到实战的MATLAB速成路径看到“数学建模”和“MATLAB初学两天搞定实战”这个标题&#xff0c;很多同学的第一反应可能是怀疑&#xff1a;两天&#xff1f;真的够吗&#xff1f;作为一个在数学建模竞赛里摸爬滚打多年&#xff0c;也带过不少队伍的过来…

作者头像 李华
网站建设 2026/8/29 15:57:37

宇航级28V DC-DC转换器:空间合格背后的筛选与可靠性设计

把一块印着SPACE-QUALIFIED字样的28V DC-DC转换器拿在手里&#xff0c;第一感觉是这东西和“转换器”这个普通名词很难划等号。金属外壳沉甸甸的&#xff0c;激光刻字、批次号、筛选状态一应俱全&#xff0c;像一件要上战场的装备&#xff0c;而不是电路板上随便焊的电源模块。…

作者头像 李华