字典(dict)作为Python中最常用的数据结构,以键值对形式存储数据,灵活高效。但很多新手在遍历字典时,总会纠结:到底该遍历键、值,还是键值对?
今天一次性把Python字典遍历的所有常用方法讲透,配详细代码+注释+运行结果,新手也能直接抄作业!
一、先认识Python字典
字典是无序(Python3.7+有序)、可变、键唯一的集合,基本格式:
# 定义一个示例字典(用户信息)
user_dict = {
"name": "张三",
"age": 25,
"gender": "男",
"city": "北京"
}
后续所有遍历案例,都用这个字典演示,方便对比学习。
二、5种最常用的字典遍历方法
方法1:只遍历「键」(keys())
适用场景:只需要获取字典的所有键,不需要值。
# 方式1:默认遍历(简写,推荐)
print("--- 简写遍历键 ---")
for key in user_dict:
print(f"键:{key}")
# 方式2:显式调用keys()(更直观)
print("\n--- 调用keys()遍历键 ---")
for key in user_dict.keys():
print(f"键:{key}")
运行结果:
--- 简写遍历键 ---
键:name
键:age
键:gender
键:city
--- 调用keys()遍历键 ---
键:name
键:age
键:gender
键:city
方法2:只遍历「值」(values())
适用场景:只需要获取字典的所有值,不需要键。
# 遍历字典所有值
print("--- 遍历字典的值 ---")
for value in user_dict.values():
print(f"值:{value}")
运行结果:
--- 遍历字典的值 ---
值:张三
值:25
值:男
值:北京
方法3:同时遍历「键+值」(items(),最常用!)
适用场景:90%的业务场景都用这个,同时获取键和值,代码最简洁。
# 同时遍历键和值(推荐首选)
print("--- 同时遍历键和值 ---")
for key, value in user_dict.items():
print(f"键:{key},值:{value}")
运行结果:
--- 同时遍历键和值 ---
键:name,值:张三
键:age,值:25
键:gender,值:男
键:city,值:北京
方法4:通过「键」获取「值」
适用场景:需要先判断键是否存在,再取值。
# 先遍历键,再通过键取值
print("--- 通过键获取值 ---")
for key in user_dict:
# 字典[键] 语法获取值
value = user_dict[key]
print(f"键:{key},值:{value}")
运行结果:和方法3一致。
方法5:带索引的遍历(enumerate())
适用场景:需要给遍历结果加序号,比如展示列表式数据。
# 遍历键值对+索引(序号)
print("--- 带索引遍历字典 ---")
for index, (key, value) in enumerate(user_dict.items(), start=1):
print(f"第{index}项 → 键:{key},值:{value}")
运行结果:
--- 带索引遍历字典 ---
第1项 → 键:name,值:张三
第2项 → 键:age,值:25
第3项 → 键:gender,值:男
第4项 → 键:city,值:北京
三、进阶:嵌套字典的遍历(实战必备)
工作中经常遇到字典里套字典的场景,比如多层用户信息,遍历方法如下:
# 嵌套字典(多层键值对)
nested_dict = {
"user1": {"name": "张三", "age": 25},
"user2": {"name": "李四", "age": 30}
}
# 遍历嵌套字典
print("--- 遍历嵌套字典 ---")
for user_id, user_info in nested_dict.items():
print(f"用户ID:{user_id}")
# 继续遍历内层字典
for key, value in user_info.items():
print(f" {key}:{value}")
运行结果:
--- 遍历嵌套字典 ---
用户ID:user1
name:张三
age:25
用户ID:user2
name:李四
age:30
四、遍历小技巧
if"name"in user_dict:
print(f"姓名:{user_dict['name']}")
# 给所有年龄+1
for key in user_dict:
if key == "age":
user_dict[key] += 1
print(user_dict) # {'name': '张三', 'age': 26, 'gender': '男', 'city': '北京'}
五、总结:该选哪种遍历方法?
| | |
|---|
| | for key in dict |
| | for value in dict.values() |
| | for k,v in dict.items() |
| | for i,(k,v) in enumerate(dict.items()) |
| | |
总结
- 日常开发**优先用
items()**,同时拿键值最方便; - 只需要键/值时,用
keys()/values(),代码更清晰;