杰瑞科技汇

Python字典如何转为列表?

核心方法概览

目标列表结构 使用方法 描述
只包含键 list(my_dict)my_dict.keys() 将字典的所有键提取到一个列表中。
只包含值 list(my_dict.values()) 将字典的所有值提取到一个列表中。
包含键值对 list(my_dict.items()) 将字典的键和值作为元组,提取到一个列表中。
自定义格式 列表推导式 灵活地将字典的键或值按照自定义的格式(如字符串、特定结构)放入列表。

准备工作:我们先定义一个示例字典

为了方便演示,我们先创建一个字典:

Python字典如何转为列表?-图1
(图片来源网络,侵删)
# 示例字典
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() 方法。

Python字典如何转为列表?-图2
(图片来源网络,侵删)
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" 这样的列表。

Python字典如何转为列表?-图3
(图片来源网络,侵删)
# 使用 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 且最高效的方式。
分享:
扫描分享到社交APP
上一篇
下一篇