
专栏Python 零基础全套入门教程 本章定位Python 中核心映射数据类型以键值对存储数据适合描述对象信息爬虫、数据分析、接口 JSON 解析都会大量使用字典是日常开发使用频率极高的数据结构。✅ 学习目标理解字典「键‑值对」存储思想区分字典和列表的使用场景掌握字典创建、访问、新增、修改、删除元素熟练使用 keys ()、values ()、items () 遍历字典掌握字典嵌套列表套字典、字典套字典熟悉字典常用内置方法规避键不存在引发的报错一、字典基础概念列表是按下标索引取值有序的数据集合字典是通过键 (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 # 方式3dict()函数创建 person dict(name小红, age15) 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键不存在程序直接崩溃方式 2get()方法推荐开发使用键不存在返回 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 删除字典元素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])五、字典其他常用方法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六、字典高频易错点总结key 只能为不可变类型字符串、数字、元组列表不可以做字典 keykey 不能重复重复会发生覆盖使用dict[key]取值key 不存在直接抛出 KeyError正式代码优先用 get ()in直接判断字典判断的是键不是值判断值要用in dict.values()del、pop 区别pop 可以拿到被删除的数据del 只做删除操作字典嵌套访问层级不要写太多可读性会变差错误示例# 列表不能作为key # test {[1,2]:abc} # 报错本章实战习题基础题创建一个字典描述书本信息书名、作者、价格分别使用 [] 和 get 两种方式取出书名。定义字典car {brand:比亚迪,color:白色}新增键值对price:150000修改颜色为 “灰色”删除 brand 键。遍历字典user {id:1001,username:admin,password:123456}同时打印所有键和值。进阶题有学生列表students [ {name:张三,score:88}, {name:李四,score:59}, {name:王五,score:92} ]遍历列表打印分数大于等于 60 分的学生姓名。字典info {city:深圳,area:龙华}判断city这个键是否存在字典中如果存在打印城市的值不存在打印 “无城市信息”。思考题写程序合并两个字典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 零基础全套教程