Python 字典 items() 方法

Python items() 语法

items() 是字典的一个方法,它返回的是字典的一个视图对象,该对象每一项是由字典的 “(键, 值)” 组成的元组。

语法:

dict.items()

说明:

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

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

  • 字典视图对象是动态的。也就是说,如果字典的键发生变化(比如添加、删除或修改键),则 items() 返回的视图也会自动更新,而无需重新调用方法。
  • 虽然字典视图对象看起来像一个列表,但它不是一个列表。我们不能对其进行索引访问,也不能直接对其进行切片。如果需要列表形式的键值对(元组),可以使用 list() 函数将其转换为列表。
  • items() 返回的视图对象支持集合的交集、并集等运算,但前提是字典中的所有值都必须是可哈希的(例如数字、字符串等)。如果字典中包含列表、字典等不可哈希的值,进行集合运算时会引发异常。

字典视图对象

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

Python items() 摘要

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

Python items() 基本使用

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

示例 1:items() 基本用法

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

运行结果如下。

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

分析:

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

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

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

示例 2:修改原字典

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

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

运行结果如下。

{'Jack': 6666, 'Lucy': 1002, 'Tony': 1003}
dict_items([('Jack', 6666), ('Lucy', 1002), ('Tony', 1003)])

示例 3:遍历所有键值对

config = {'theme': 'dark', 'font_size': 12, 'language': 'en'}
for key, value in config.items():
    print(f'配置项:{key},值:{value}')

运行结果如下。

配置项:theme,值:dark
配置项:font_size,值:12
配置项:language,值:en

分析:

我们可以使用 for 循环直接遍历 items() 返回的视图对象,这样可以同时获取键和值,而无需先将视图对象额外转换为其他对象,适用于高效处理数据。

示例 4:成员资格检查

d = {'a': 1, 'b': 2}
print(('a', 1) in d.items())

运行结果如下。

True

上一篇: values()

下一篇: fromkeys()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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