Python新手,熬过了列表,直接栽在字典上!
列表的增删改查刚摸熟,一碰到字典的键、值、键值对,瞬间脑子一团乱。分不清key和value、不知道什么时候用字典、总写错取值方法、频繁报错。
今天完全抛开书本枯燥定义,全程大白话+生活类比,不用死记硬背,看完直接弄懂字典核心,上手敲代码零卡顿。
先说好:字典真的比列表简单!只是你没人用通俗的方式讲明白。
一、字典核心一句话,记住就不会懵
字典英文 dict,标识是大括号 {}
核心特点:无序(新版Python看似有序,本质是映射关系)、键值对应、查询超快、按名字取值,不按序号取值。
简单说:列表是「按顺序排队的清单」,字典是「一对一对应的对照表」。
二、生活化类比,彻底吃透字典本质
字典 = 随身备忘录 / 通讯录
通讯录里:名字对应的手机号、性别、年龄,一一对应。
你不会问「通讯录第3个人是谁」,你只会问「张三的电话是多少」。
这就是字典的核心:不用数位置,通过名字(key)找内容(value)。
举个最直观的代码例子
# key是姓名,value是年龄
info = {"小明": 18, "小红": 20, "小李": 19}
字典3个核心特性(对应生活场景)
1、键key:唯一、不能重复
通讯录里不可能有两个一模一样的「小明」,重复了就分不清是谁,所以字典的键绝对不允许重复,重复写会直接覆盖旧数据。
2、值value:随便改、随便重复
两个人可以同岁,所有人年龄都是18也没问题,值可以是数字、文字、列表、甚至另一个字典,不限类型。
3、不靠下标,靠键取值
列表靠0、1、2序号取值,字典完全不用数位置,直接报键名就能拿到对应的值。
print(info["小明"]) # 输出18
新手必记区分:列表VS字典
列表[]:靠序号取值,有序、可重复、适合存同类清单
字典{}:靠名字取值,一一对应、键唯一、适合存对应关系
三、字典最常用操作,配套可直接抄的实操代码
不用死背方法名,结合「增删改查」的生活场景记,敲两遍就永久记住。
1、查数据(用备忘录查信息)
两种方式,新手优先用get,不容易报错
stu = {"name": "小王", "age": 22, "gender": "男"}
# 方式1:直接按键取值,找不到键直接报错
print(stu["name"])
# 方式2:get取值,找不到不报错,返回None(超适合新手)
print(stu.get("age"))
# 还可以自定义找不到的提示
print(stu.get("height", "没有该数据"))
2、改数据(修改备忘录内容)
字典修改超级简单:存在键就更新值,不存在就新增数据
# 修改原有数据
stu["age"] = 23
print(stu)
# 新增键值对
stu["score"] = 95
print(stu)
3、增数据(添加新的备忘录信息)
除了直接赋值新增,还有批量更新方法update()
# 批量添加/修改多个键值对
stu.update({"address": "北京", "hobby": "打球"})
print(stu)
4、删数据(删除备忘录内容)
三个删除方法,用途完全不一样,别混用
# 1、pop():指定键删除,能拿到删掉的值
stu.pop("hobby")
# 2、popitem():删除最后一组键值对(新版Python)
stu.popitem()
# 3、clear():一键清空整个字典
stu.clear()
5、高频必备:提取所有键、所有值、所有键值对
循环遍历字典必用,刷题、做项目百分百用到
d = {"a": 1, "b": 2, "c": 3}
print(d.keys()) # 获取所有键
print(d.values()) # 获取所有值
print(d.items()) # 获取所有键值对(遍历神器)
四、新手必踩4个字典易错坑,提前规避零报错
这些错误90%新手都犯过,看完直接避开,少熬无数夜
坑1:直接取值不存在的键,程序崩溃
用字典["不存在的键"],代码直接报错终止。
解决:一律用字典.get(),找不到数据只会返回None,程序不崩溃。
坑2:键重复,数据被偷偷覆盖
d = {"name": "张三", "name": "李四"}
print(d) # 只会保留最后一个,张三被直接覆盖
记住:键必须唯一,重复必覆盖,写代码前一定要检查键名。
坑3:乱用可变类型当键
字典的键必须是不可变类型(字符串、数字、元组),列表绝对不能当键!
因为列表能修改、不固定,字典无法识别,直接报错。值随便用什么类型都没问题。
坑4:分不清新增和修改
stu["age"] = 25
键存在 = 修改数据
键不存在 = 新增数据
就这一行代码,兼顾新增和修改,不用分开写逻辑,超级方便。
五、什么时候用字典?看完再也不纠结列表和字典
1、数据是一一对应关系:姓名-年龄、学号-成绩、商品名-价格
2、需要精准查询,不想一个个遍历查找,字典查询速度远超列表
3、数据字段不统一、需要自定义标识,适合存个人信息、详情数据
4、不需要排序、不需要按序号取值,只需要按名称取值的场景
六、新手速成小技巧,比死记知识点管用10倍
1、记核心公式:字典 = 键:值,键唯一,值随意
2、取值优先get,改增直接赋值,批量更新用update,删除用pop
3、故意写错测试:写一个不存在的键看报错、写重复键看覆盖,出错一次记忆顶背诵十次
4、做题快速判断:有对应关系、按名字取值 → 直接用字典;有序排队、批量同类数据 → 用列表
其实字典一点都不难,难的是没人用生活逻辑帮你梳理!
初学Python的小伙伴,你是卡在键值对分不清?还是取值、删除方法总用混?评论区说说你的难点,下期出专属保姆级实操练习题!
点个关注,全程大白话讲Python,不搞晦涩术语,零基础也能轻松入门!