【发布时间】:2018-04-26 15:57:03
【问题描述】:
我一直在尝试理解 Python 3 中 .items()、.values()、.keys() 或 .viewitems()、.viewvalues()、.viewkeys() 类似地返回的内置视图对象。关于该主题还有其他线程,但似乎没有一个(甚至doc)描述了它们在内部是如何工作的。
与 Python 2 中返回的 list 类型的副本相比,这里的主要收获似乎是有效的。经常将字典项与 窗口 进行比较(就像在这个thread 中一样)。
但是那个窗口是什么?为什么它更高效?
我唯一能看到的是视图对象似乎是 set-like 对象,这对于成员资格测试通常更快。但这是唯一的因素吗?
代码示例
>>> example_dict = {'test':'test'}
>>> example_dict.items()
dict_items([('test', 'test')])
>>> type(example_dict.items())
<class 'dict_items'>
所以,我的问题是关于这个dict_items 课程。这在内部是如何运作的?
【问题讨论】:
-
我确实读过它,但正如我在问题中所说,它使用了我无法在 Python 内部部分理解的窗口类比。
-
@vaultah 我真的不认为这是重复的,因为它没有描述他的 window 代表什么,这正是我要问的。如果你仍然认为是,你能解释一下这个神奇的窗口是什么吗?
-
票数最高的答案的最后一段说“总而言之,视图只是……字典上的视图(窗口),即使字典发生更改,它也会显示字典的内容”我>。这不能回答你的问题吗?
-
@vaultah:我的回答解释了视图的实际作用。它没有使用“窗口”这个词,因为我认为这个词不能帮助解释视图的实际作用。
标签: python dictionary dictview