Python 字典转换为列表

在 Python 中,如果想要将一个字典转换为一个列表,常用的有以下 3 种方式。

  • 使用 list() 函数。
  • 使用 keys()、values() 或 items() 方法。
  • 使用列表推导式。

使用 list() 函数

list() 是 Python 的一个内置函数,它接收一个可迭代对象作为参数,然后返回一个列表。换句话来说,list() 函数可以将 “其他可迭代对象” 转换为 “列表”。

语法:

list(iterable)

说明:

list() 接收单个参数。

  • iterable(可选):是一个可迭代对象。如果 iterable 省略,则返回一个空列表;如果 iterable 不省略,则创建一个由可迭代项组成的列表。

示例 1:list() 将字典转为列表

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
result = list(students)
print(result)

运行结果如下。

['Jack', 'Lucy', 'Tony']

分析:

需要注意的是,如果 list() 的参数是一个字典,那么只会将字典的所有键作为元素组合成一个列表。

使用 keys()、values() 或 items() 方法

在 Python 中,我们可以使用字典的 keys()values()items() 这 3 种方法来将一个字典转换为一个列表。

字典的 keys()、values() 和 items() 这 3 种方法返回的结果都不是列表,而是一种视图(view),也叫做字典视图对象。但是我们可以进一步使用 list() 函数将其转换为列表。

示例 2:keys() 将字典转为列表

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
keys = students.keys()
result = list(keys)

print(keys)
print(result)

运行结果如下。

dict_keys(['Jack', 'Lucy', 'Tony'])
['Jack', 'Lucy', 'Tony']

分析:

keys() 方法获取的是字典所有的键。

示例 3:values() 将字典转为列表

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
values = students.values()
result = list(values)

print(values)
print(result)

运行结果如下。

dict_values([1001, 1002, 1003])
[1001, 1002, 1003]

分析:

values() 方法获取的是字典所有的值。

示例 4:items() 将字典转为列表

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
items = students.items()
result = list(items)

print(items)
print(result)

运行结果如下。

dict_items([('Jack', 1001), ('Lucy', 1002), ('Tony', 1003)])
[('Jack', 1001), ('Lucy', 1002), ('Tony', 1003)]

分析:

items() 方法获取的是字典所有的键和值(以元组的形式组成列表)。

使用列表推导式

在 Python 中,我们可以使用 “推导式” 快速生成一个列表。这种方式叫 “列表推导式” 或 “列表生成式”。

列表推导式是 “very Python” 的循环方式,它不仅体现了 Python 简洁优美的思想,而且比普通的循环方式更加简洁高效。

语法:

列表名 = [表达式 for 变量 in 可迭代对象]

说明:

在该语法中,前面的 “表达式” 一般需要用到后面的 “变量”,这是列表推导式非常重要的特点。

示例 5:列表推导式将字典转为列表

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
result = [key for key in students.keys()]
print(result)

运行结果如下。

['Jack', 'Lucy', 'Tony']

分析:

上面例子是获取字典所有的键,并将其组成一个列表返回。如果你想要获取字典所有的值,可以使用下面代码来实现。

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
result = [value for value in students.values()]
print(result)
给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号