什么是字典视图对象?

什么是字典视图对象?,第1张

什么是字典视图对象?

字典视图本质上就是它们的名字所说的: 视图就像 是字典的键和值(或项)上的 窗口 。这是Python
3官方文档的摘录:

>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}>>> keys = dishes.keys()>>> values = dishes.values()>>> # view objects are dynamic and reflect dict changes>>> del dishes['eggs']>>> keys  # No eggs anymore!dict_keys(['sausage', 'bacon', 'spam'])>>> values  # No eggs value (2) anymore!dict_values([1, 1, 500])

(Python 2等效项使用

dishes.viewkeys()
dishes.viewvalues()
。)

此示例显示了 视图动态特性 :按键视图 不是
给定时间点的按键副本,而是一个简单的窗口,向您显示按键;如果它们被更改,那么您在窗口中看到的内容也会更改。此功能在某些情况下很有用(例如,可以在程序的多个部分中使用键的视图,而不必每次都需要重新计算当前键列表)—请注意,如果修改了字典键在视图上进行迭代时,迭代器的行为方式未明确定义,这可能会导致错误。

一个优点是,例如, 查看 键仅 使用少量且固定的内存, 并且需要 少量且固定的处理器时间 ,因为不创建键列表(另一方面,Python
2,通常会不必要地创建一个新列表,如Rajendran
T所引用的那样,该列表占用的内存和时间与列表的长度成比例。要继续进行窗口类比,如果您想查看墙后的风景,只需在其中开一个洞(您就可以创建一个窗口);将关键帧复制到列表中将相当于在墙上绘制风景的副本-
该副本需要时间,空间并且不会自我更新。

概括来说,视图只是…词典上的视图(窗口),即使词典发生更改,视图也仍会显示它们的内容。它们提供的功能与列表不同:键的列表包含给定时间点的字典键的 副本
,而视图是动态的,并且获取起来要快得多,因为它无需复制任何数据(键或值)以进行创建。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5666242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存