Python3 字典 items() 方法
描述
Python 字典的 items() 方法用于获取字典中所有的键值对(key/value),返回一个 dict_items 视图对象。
视图对象中的每个元素都是一个包含两个值的元组,格式为 (key, value),分别表示字典的键和值。
例如:
dict_items([('Name', 'Runoob'), ('Age', 7)])
items() 返回的不是列表,而是一个动态视图。当字典中的元素发生变化时,视图对象也会反映这些变化。
与 keys() 和 values() 一样,items() 返回的视图对象支持遍历,但不支持通过索引直接访问元素。
如果需要使用索引访问,可以先使用 list() 将视图转换为列表。
语法
items() 方法语法如下:
dict.items()
参数
无。
返回值
返回一个 dict_items 视图对象,包含字典中的所有键值对。
该对象具有以下特点:
- 可以使用
for循环遍历。 - 每个键值对以
(key, value)元组形式表示。 - 字典发生变化时,视图会动态反映变化。
- 不支持通过下标直接访问元素。
- 可以使用
list()转换为列表。
从 Python 3.7 开始,字典的插入顺序成为语言规范的一部分,因此 items() 遍历键值对时会保留字典的插入顺序。
实例
以下实例展示了 items() 方法的基本使用:
实例
以上实例输出结果为:
Value : dict_items([('Name', 'Runoob'), ('Age', 7)])
可以看到,返回结果包含两个键值对,每个键值对都以元组形式表示。
实例 2:遍历字典的键和值
items() 最常见的用途是配合 for 循环,同时获取字典的键和值。
实例
执行结果:
Name : Runoob Age : 7 Site : www.runoob.com
其中,key 接收字典的键,value 接收对应的值。这种写法使用了 Python 的元组解包功能。
实例 3:将 items() 转换为列表
由于 dict_items 不支持索引,如果需要根据下标访问键值对,可以先将它转换为列表。
实例
执行结果:
[('Name', 'Runoob'), ('Age', 7)]
('Name', 'Runoob')
('Age', 7)
注意:转换后的列表是转换时的结果,不会随着原字典新增或删除键值对而自动更新。
实例 4:动态视图
items() 返回的视图与原字典保持关联。
修改字典中的值、添加或删除键值对后,再次查看同一个视图对象,可以看到更新后的内容。
实例
执行结果:
dict_items([('Name', 'Runoob'), ('Age', 7)])
dict_items([('Name', 'Runoob'), ('Age', 8), ('Site', 'www.runoob.com')])
可以看到,虽然只调用了一次 items(),但当原字典发生变化时,视图对象显示的内容也随之更新。
需要注意,不能通过视图对象直接增删字典中的键值对。如果需要修改字典,应操作原字典。
实例 5:判断键值对是否存在
items() 返回的视图还支持使用 in 运算符判断某个键值对是否存在。
实例
执行结果:
True False
判断时需要同时匹配键和值。例如,('Age', 8) 不存在,因为字典中 'Age' 对应的值是 7。
注意事项
- 返回的是视图:
items()不会直接返回列表,也不会创建一份独立的键值对列表副本。 - 支持动态更新:修改原字典后,视图会反映最新内容。
- 不支持索引:不能使用
dict.items()[0],需要时可转换为列表。 - 遍历时避免修改字典大小:在遍历视图期间新增或删除键值对,可能引发
RuntimeError或导致遍历结果不完整。 - 保留插入顺序:Python 3.7 及以上版本保证字典按照键的插入顺序进行遍历。
如果需要遍历字典并删除符合条件的键,可以先创建键值对列表副本:
实例
执行结果:
{'Tom': 85, 'Lucy': 92}
这种方式适合需要根据键值对删除字典元素的场景。
Python3 字典
CosmosHua
cos***cosmos@163.com
遍历例子:
d = {'Name': 'Runoob', 'Age': 7} for i,j in d.items(): print(i, ":\t", j)输出:
CosmosHua
cos***cosmos@163.com
hichcock
hic***ck_tian@hotmail.com
将字典的 key 和 value 组成一个新的列表:
d={1:"a",2:"b",3:"c"} result=[] for k,v in d.items(): result.append(k) result.append(v) print(result)输出:
hichcock
hic***ck_tian@hotmail.com