核心方法概览
| 目标列表结构 | 使用方法 | 描述 |
|---|---|---|
| 只包含键 | list(my_dict) 或 my_dict.keys() |
将字典的所有键提取到一个列表中。 |
| 只包含值 | list(my_dict.values()) |
将字典的所有值提取到一个列表中。 |
| 包含键值对 | list(my_dict.items()) |
将字典的键和值作为元组,提取到一个列表中。 |
| 自定义格式 | 列表推导式 | 灵活地将字典的键或值按照自定义的格式(如字符串、特定结构)放入列表。 |
准备工作:我们先定义一个示例字典
为了方便演示,我们先创建一个字典:

# 示例字典
student_scores = {
"Alice": 95,
"Bob": 88,
"Charlie": 76,
"David": 99
}
转换为只包含“键”的列表
这是最简单直接的方法,当你对一个字典使用 list() 函数时,它会默认返回一个包含所有键的列表。
方式 A: list(dict)
keys_list = list(student_scores)
print(f"方式 A 的结果: {keys_list}")
# 输出: 方式 A 的结果: ['Alice', 'Bob', 'Charlie', 'David']
方式 B: dict.keys()
dict.keys() 方法返回一个“视图对象”(dict_keys),它像是一个动态的键集合,你可以直接将其传递给 list() 来转换。
keys_view = student_scores.keys()
keys_list_from_view = list(keys_view)
print(f"方式 B 的结果: {keys_list_from_view}")
# 输出: 方式 B 的结果: ['Alice', 'Bob', 'Charlie', 'David']
两种方式效果相同,list(my_dict) 是更简洁的写法。
转换为只包含“值”的列表
如果你需要字典中所有的值,可以使用 dict.values() 方法。

values_list = list(student_scores.values())
print(f"转换后的值列表: {values_list}")
# 输出: 转换后的值列表: [95, 88, 76, 99]
转换为包含“键值对”的列表
这是非常有用的方法,它将字典的每个键和值组合成一个元组,然后将所有这些元组放入一个列表中,这在需要同时处理键和值时非常方便。
items_list = list(student_scores.items())
print(f"转换后的键值对列表: {items_list}")
# 输出: 转换后的键值对列表: [('Alice', 95), ('Bob', 88), ('Charlie', 76), ('David', 99)]
你可以像操作普通列表一样操作这个结果,并通过索引轻松访问键和值:
# 访问第一个键值对
first_item = items_list[0]
print(f"第一个键值对: {first_item}")
# 输出: 第一个键值对: ('Alice', 95)
# 访问第一个键
first_key = items_list[0][0]
print(f"第一个键: {first_key}")
# 输出: 第一个键: Alice
# 访问第一个值
first_value = items_list[0][1]
print(f"第一个值: {first_value}")
# 输出: 第一个值: 95
使用列表推导式进行自定义转换
列表推导式是 Python 中最强大、最灵活的工具之一,它允许你用一行代码创建列表,并根据需要对元素进行转换。
示例 1:将值列表中的每个分数加 5 分
# 使用列表推导式
adjusted_scores = [score + 5 for score in student_scores.values()]
print(f"调整后的分数列表: {adjusted_scores}")
# 输出: 调整后的分数列表: [100, 93, 81, 104]
示例 2:创建一个包含特定格式的字符串列表
创建一个如 "Alice: 95" 这样的列表。

# 使用 items() 和列表推导式
report_lines = [f"{name}: {score}" for name, score in student_scores.items()]
print(f"生成的报告行列表: {report_lines}")
# 输出: 生成的报告行列表: ['Alice: 95', 'Bob: 88', 'Charlie: 76', 'David: 99']
示例 3:筛选出分数大于 90 的学生姓名
# 结合条件判断
top_students = [name for name, score in student_scores.items() if score > 90]
print(f"高分学生列表: {top_students}")
# 输出: 高分学生列表: ['Alice', 'David']
总结与对比
| 转换目标 | 推荐方法 | 代码示例 | 结果 |
|---|---|---|---|
| 获取所有键 | list(my_dict) |
list(student_scores) |
['Alice', 'Bob', 'Charlie', 'David'] |
| 获取所有值 | list(my_dict.values()) |
list(student_scores.values()) |
[95, 88, 76, 99] |
| 获取所有键值对 | list(my_dict.items()) |
list(student_scores.items()) |
[('Alice', 95), ('Bob', 88), ('Charlie', 76), ('David', 99)] |
| 自定义复杂转换 | 列表推导式 | [f"{k}: {v}" for k, v in student_scores.items()] |
['Alice: 95', 'Bob: 88', 'Charlie: 76', 'David: 99'] |
如何选择?
- 只需要键或值? 直接使用
list(my_dict)或list(my_dict.values())。 - 需要同时处理键和值? 使用
list(my_dict.items())。 - 需要对数据进行过滤、格式化或任何其他操作? 使用列表推导式,这是最 Pythonic 且最高效的方式。
