Python - 字典视图

发布时间 2023-05-03 20:59:55作者: chuangzhou

dict 的实例方法.keys()、.values()、.items()分别返回dict_keys、dict_values 和 dict_items类的实例。
这些字典视图是dict内部实现使用的数据结构的只读投影。Python 2 种对应的方法返回列表,重复dict 中已有的数据,
有一定的内存开销。另外,视图还取代了返回迭代器的旧方法

>>> d = dict(a=10,b=20,c=30)
>>> values = d.values()
>>> values
dict_values([10, 20, 30])  # 1 
>>> len(values) # 2
3
>>> list(values) # 3
[10, 20, 30]
>>> reversed(values) # 4
<dict_reversevalueiterator object at 0x000001F87E844540>
>>> values[0] # 5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'dict_values' object is not subscriptable
>>>

1.通过视图对象的字符串表示形式查看视图的内容
2.可以查询视图的长度
3.视图是可迭代对象,方便构建列表
4.视图实现了__reversed__方法,返回一个自定义迭代器
5.不能使用[]获取视图中的项

dict_keys、dict_values 和 dict_items 是内部类,不能通过__builtins__或标准库中的任何模块获取,尽管可以得到实例,但是
在Python代码中不能通过手动创建

>>> d['z'] = 40
>>> d
{'a': 10, 'b': 20, 'c': 30, 'z': 40}
>>> values
dict_values([10, 20, 30, 40])

dict_keys 类是最简单的字典视图类,只实现了__len__、__iter__和__reversed__这三个特殊方法