字典(dict)是 Python 中最常用、最高效的数据结构之一,它以键值对(key-value)的形式存储数据,就像我们平时用的字典——通过「键(单词)」就能快速找到「值(释义)」。
访问字典元素是使用字典的核心操作,今天我用超详细、超易懂的方式,结合大量实例,把所有访问方法讲透,新手也能直接上手!
一、先认识 Python 字典(基础铺垫)
字典用大括号 {} 表示,每个元素是一个 键: 值 对,键值之间用冒号分隔,元素之间用逗号分隔。
特点:
- 键(key)必须唯一,且不可变(字符串、数字、元组)
- 值(value)可以是任意数据类型(列表、字典、数字等)
示例字典(下文所有例子都用它):
# 定义一个用户信息字典
user = {
"name": "张三",
"age": 25,
"gender": "男",
"city": "北京",
"hobby": ["读书", "跑步", "编程"]
}
二、访问字典元素的 5 种核心方法
方法1:方括号 [] 直接访问(最常用)
语法:字典名[键名]这是最简单、最常用的方式,直接通过键获取对应的值。
代码示例:
user = {
"name": "张三",
"age": 25,
"gender": "男",
"city": "北京",
"hobby": ["读书", "跑步", "编程"]
}
# 访问单个值
print(user["name"]) # 输出:张三
print(user["age"]) # 输出:25
print(user["hobby"]) # 输出:['读书', '跑步', '编程']
# 访问列表类型的值(嵌套取值)
print(user["hobby"][0]) # 输出:读书
⚠️ 注意:如果访问不存在的键,会直接报错 KeyError!
print(user["email"]) # 报错:KeyError: 'email'
方法2:get() 方法(最安全,推荐新手用)
语法:字典名.get(键名, 默认值)
这是生产环境最推荐的访问方式,避免程序崩溃!
代码示例:
user = {"name": "张三", "age": 25, "city": "北京"}
# 键存在,正常取值
print(user.get("name")) # 输出:张三
# 键不存在,返回 None
print(user.get("email")) # 输出:None
# 键不存在,返回自定义默认值(实用!)
print(user.get("email", "未填写邮箱")) # 输出:未填写邮箱
print(user.get("height", 175)) # 输出:175
✅ 优点:容错率高,不会因为键不存在导致程序报错。
方法3:一次性获取 所有键 / 所有值 / 所有键值对
如果需要遍历字典,或批量获取数据,用这 3 个方法:
1. keys():获取所有键
user = {"name": "张三", "age": 25, "city": "北京"}
# 获取所有键
print(user.keys()) # 输出:dict_keys(['name', 'age', 'city'])
# 转列表使用
keys_list = list(user.keys())
print(keys_list) # 输出:['name', 'age', 'city']
2. values():获取所有值
# 获取所有值
print(user.values()) # 输出:dict_values(['张三', 25, '北京'])
# 转列表
values_list = list(user.values())
print(values_list) # 输出:['张三', 25, '北京']
3. items():获取所有键值对(最常用!)
返回每个元素为 (键, 值) 的元组,适合遍历字典。
# 获取所有键值对
print(user.items())
# 输出:dict_items([('name', '张三'), ('age', 25), ('city', '北京')])
# 遍历字典(工作中最常用写法)
for key, value in user.items():
print(f"键:{key},值:{value}")
输出结果:
键:name,值:张三
键:age,值:25
键:city,值:北京
方法4:setdefault() 方法(查询 + 设默认值二合一)
语法:字典名.setdefault(键名, 默认值)
代码示例:
user = {"name": "张三", "age": 25}
# 键存在,直接返回值
print(user.setdefault("name", "未知")) # 输出:张三
# 键不存在,添加到字典并返回默认值
print(user.setdefault("email", "test@163.com")) # 输出:test@163.com
# 查看字典,email 已被添加
print(user)
# 输出:{'name': '张三', 'age': 25, 'email': 'test@163.com'}
✅ 适用场景:需要给字典补充默认字段时使用。
方法5:嵌套字典的访问(进阶必备)
字典的值可以是另一个字典,这种叫嵌套字典,访问时逐层写键即可。
示例:
# 嵌套字典:用户信息 + 详细地址
student = {
"name": "李四",
"age": 20,
"address": {
"province": "广东",
"city": "深圳",
"district": "南山区"
}
}
# 访问嵌套字典的值
print(student["address"]["city"]) # 输出:深圳
print(student["address"]["district"]) # 输出:南山区
# 用 get() 安全访问嵌套字典
print(student.get("address", {}).get("province")) # 输出:广东
print(student.get("address", {}).get("street", "暂无街道信息")) # 输出:暂无街道信息
三、5 种方法对比总结(一目了然)
| | | |
|---|
| dict[key] | | |
get() | dict.get(key) | | |
keys() | dict.keys() | | |
values() | dict.values() | | |
items() | dict.items() | | |
setdefault() | dict.setdefault() | | |
四、新手必看:3 个避坑提醒
- 字典是通过「键」访问,不是通过「索引」
user = {"name": "张三"}
print(user[0]) # 报错!不能用数字索引,必须用键
- 不确定键是否存在时,**优先用
get()**,不要用方括号
总结
- 访问字典元素核心:通过键取值,最常用
[] 和 get() - 批量获取:
keys()/values() 拿所有键/值
看完这篇,Python 字典的访问操作你就完全掌握了!建议收藏,随时翻看~