在Python容器类型的学习中,列表和元组解决了“批量存储数据”的基础需求,而今天我们要解锁的字典(Dictionary),则以“键值对”为核心,实现了更高效、更具针对性的数据存储与访问方式。
与列表的[]、元组的()不同,字典采用大括号{}包裹数据,核心区别在于访问逻辑——列表依赖索引定位元素,而字典通过“键(key)”与“值(value)”的一一对应关系查找内容,就像日常使用的字典,通过关键词就能快速获取对应解释,这也是字典最核心、最实用的特点。
很多新手刚接触字典会有点懵:列表用[]、元组用(),字典偏偏用{};列表靠索引找元素,字典却靠“名字”找——其实字典的核心特别简单,就是“键值对”存储,像一本字典一样,查“关键词”就能快速找到对应“内容”。
📌 先搞懂:什么是Python字典?
字典(Dictionary)是Python中最常用的键值对容器,也是一种可变容器,核心作用是“通过唯一的‘键’,快速找到对应的‘值’”,就像咱们平时用的新华字典:
新华字典里,“苹果”是“关键词”(对应字典的“键”),“一种圆形、红色的水果”是“解释”(对应字典的“值”);Python字典里,每一个“键(key)”都对应一个“值(value)”,两者成对出现,这就是“键值对”。
简单说:字典 = 多个键值对的集合,用大括号 {} 包裹,键和值之间用冒号 : 分隔,不同键值对之间用逗号 , 分隔,语法特别好记。
1. 字典的定义语法(必记)
入门必记的基础语法,直接套用即可,结合示例一看就懂:
# 基础格式:字典名 = {键1: 值1, 键2: 值2, 键3: 值3, ...}# 示例1:简单字典(键为字符串,值为不同类型)student = {"name": "小明", "age": 20, "score": 95, "like_python": True}# 示例2:值可以是列表/元组(嵌套使用,超实用)user = { "username": "python123", "password": "123456", "hobbies": ["编程", "看书", "跑步"], # 值为列表 "address": ("北京", "朝阳") # 值为元组}# 示例3:空字典(后续动态添加键值对)empty_dict = {}# 示例4:键为数字(不推荐,但语法允许)num_dict = {1: "one", 2: "two", 3: "three"}
小提醒:字典的键(key)必须是“不可变类型”,比如字符串、数字、元组;而值(value)没有任何限制,字符串、数字、列表、元组、甚至字典都可以当值。
2. 键值对的核心特点(重中之重)
字典的所有用法,都围绕键值对展开,记住这3个特点,能避开80%的新手坑:
键唯一:同一个字典里,键(key)不能重复,重复的键会被后面的覆盖(比如{"name": "小明", "name": "小红"},最终name的值是“小红”)。
键不可变:键不能是列表、字典这种可变类型(比如{[1,2]: "错误"},会直接报错),但值可以随便变。
无序(Python 3.7+有序):Python 3.7之前,字典的键值对没有固定顺序;3.7及以后,会保留插入顺序,日常学习不用纠结,重点关注“键值对应”即可。
🔍 核心操作:如何访问字典的键值对?
字典和列表、元组最大的区别的是:不通过索引访问,而是通过“键”访问,就像查字典一样,输入“键”,就能直接拿到对应的“值”,方法特别简单。
1. 直接通过“键”访问(最常用)
语法:字典名[键名],直接获取对应的值,示例如下:
# 定义一个字典student = {"name": "小明", "age": 20, "score": 95, "like_python": True}# 访问name对应的值print(student["name"]) # 输出:小明# 访问age对应的值print(student["age"]) # 输出:20# 访问嵌套列表的值(先找键,再找列表索引)user = {"hobbies": ["编程", "看书", "跑步"]}print(user["hobbies"][0]) # 输出:编程(先找hobbies,再取列表第一个元素)
注意:如果访问的键不存在于字典中,会直接报错(KeyError),新手一定要注意避开这个坑!
2. 用get()方法访问
为了避免“键不存在报错”,推荐用get()方法,语法:字典名.get(键名, 默认值),即使键不存在,也不会报错,会返回默认值(默认值可省略,省略后返回None)。
student = {"name": "小明", "age": 20, "score": 95}# 正常访问(键存在)print(student.get("name")) # 输出:小明# 访问不存在的键(不设置默认值)print(student.get("gender")) # 输出:None(不报错)# 访问不存在的键(设置默认值)print(student.get("gender", "男")) # 输出:男(自定义默认值)
✅ 新手必练:3个基础实战案例
看完知识点,练3个小案例,快速巩固字典的定义和访问方法,新手也能轻松完成:
定义一个字典,存放自己的个人信息(姓名、年龄、身高、爱好),其中爱好用列表表示。
用两种方式(直接访问、get()方法),获取自己的姓名和一个不存在的键(比如“职业”),观察输出结果。
尝试给字典添加一个新的键值对(比如“职业:学生”),再修改其中一个值(比如修改年龄)。
# 案例参考(新手可直接复制修改)# 1. 定义个人信息字典my_info = { "name": "小李", "age": 18, "height": 175.5, "hobbies": ["Python", "打篮球", "听音乐"]}# 2. 两种访问方式print(my_info["name"]) # 直接访问,输出:小李print(my_info.get("job", "学生")) # get()方法,输出:学生# 3. 添加、修改键值对my_info["job"] = "学生" # 添加新键值对my_info["age"] = 19 # 修改age的值print(my_info) # 输出修改后的字典
❌ 避坑指南:3个常见误区
刚学字典的新手,很容易踩这3个坑,提前记住,少走弯路:
误区1:用列表当字典的键——比如{[1,2]: "错误"},会直接报错,记住:键必须是不可变类型(字符串、数字、元组)。
误区2:访问键时拼写错误——比如把student["name"]写成student["Name"](大小写不同),会报错KeyError,键是区分大小写的。
误区3:混淆字典和列表的访问方式——试图用索引访问字典(比如student[0]),会报错,字典只能用“键”访问,不能用索引。
📝 核心总结
Python字典的核心是“键值对”,用{}定义,键唯一且不可变,值可任意,访问时通过“键”找“值”,get()方法能避免报错,适合存放需要“一一对应”的数据(比如个人信息、配置项)。
和列表、元组对比:列表靠索引、元组不可变、字典靠键值对,三者各有优势,后续我们会讲字典的进阶操作(增删改查、遍历),教大家灵活搭配使用。
练习建议:多定义几个不同类型的字典,尝试访问、添加、修改键值对,感受字典的便捷性,练熟了,实战中就能快速上手~
关注我,每天学一点Python干货,从新手逐步成长为编程达人!字典键值一一配,查询修改更便捷,新手入门不踩坑,coding之路更顺畅。