Python 字典 values() 方法

Python values() 语法

values() 是 Python 字典的一个方法,它返回字典的一个视图对象,该视图对象每一项是字典的值。

语法:

dict.values()

说明:

values() 方法不接收任何参数。

对于 values() 方法,小伙伴们要清楚以下几点。

  • 字典视图对象是动态的。也就是说,如果字典的键发生变化(比如添加、删除或修改键),则 values() 返回的视图也会自动更新,而无需重新调用方法。
  • 虽然字典视图对象看起来像一个列表,但它不是一个列表。我们不能对其进行索引访问,也不能直接对其进行切片。如果需要列表形式的值,可以使用 list() 函数将其转换为列表。
  • 字典视图对象支持迭代操作(比如可以对其进行 for 循环),并且支持 in 成员测试和 len() 获取长度。需要注意的是,与 keys() 不同,values() 返回的视图对象不支持集合的交集、并集等运算。

字典视图对象

字典的 keys()、values() 和 items() 这 3 种方法返回的结果都不是列表,而是一种视图(view),也叫做字典视图对象。视图在字典内容变化时会动态更新,这就是需要使用 list() 函数来将结果转换为列表的原因。另外,该视图本质上是一个可迭代对象,因此我们可以使用 for 循环来迭代,并且可以使用 in 或 not in 来检查成员的资格。

Python values() 摘要

使用频率
修改原字典
官方文档 查看
相关方法 keys()items()

Python values() 示例

接下来,我们通过几个简单的例子来讲解 Python values() 方法是如何使用的。

示例 1:values() 基本用法

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

运行结果如下。

dict_values([1001, 1002, 1003])

分析:

字典的视图对象,本质上是一个可迭代对象。我们可以使用 list() 函数将其转换为一个列表。这里如果将 result = students.values() 改为 result = list(students.values()),再次运行后结果如下:

[1001, 1002, 1003]

所谓的视图对象,类似于 SQL 视图。修改原字典中的数据,那么视图对象的数据也会即时改变。请看下面例子。

示例 2:修改原字典

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

students['Lily'] = 6666
print(students)
print(result)

运行结果如下。

{'Jack': 1001, 'Lucy': 1002, 'Tony': 1003, 'Lily': 6666}
dict_values([1001, 1002, 1003, 6666])

示例 3:转换为静态列表并统计

scores = {'Math': 90, 'Science': 80, 'History': 100}
values_list = list(scores.values())
average = sum(values_list) / len(values_list)
print(f'平均分: {average}')

运行结果如下。

平均分: 90.0

分析:

list(scores.values()) 用于将视图对象转换为列表,该列表是静态的(不会随字典改变而改变),适合需要固定数据的计算场景(如求平均值)。

示例 4:遍历所有值

inventory = {'apples': 50, 'bananas': 30, 'oranges': 45}
for quantity in inventory.values():
    print(f'当前库存量: {quantity}')

运行结果如下。

当前库存量: 50
当前库存量: 30
当前库存量: 45

分析:

我们可以直接遍历 values() 返回的视图对象,而无需先将视图对象转换为列表再遍历,适用于高效处理大规模数据。

上一篇: keys()

下一篇: items()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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