当我使用collections.Counter
的viewkeys(),viewitems()和viewvalues()方法时,我遇到了这三种类型。
返回的三种方法的值类型为dict_keys
,dict_items
和dict_values
。
正如我所注意到的,它们是可迭代的。
但我的问题是,为什么这三种类型存在?或者它们的用途是什么?
答案 0 :(得分:31)
What's new in 2.7文件是介绍这些文件的地方。这些“观点”被引入(提议here)用于Python 3(并且向后移植到2.7,正如您所见),作为他们所指的dict片段中最好的全世界。
在我们使用简单制作列表的keys
/ values
/ items
方法之前。这会通过复制dict的信息来浪费内存,我们使用了iterkeys
/ itervalues
/ iteritems
方法,这些方法不会浪费这些记忆但不是很有特色(你唯一可以做的事情)迭代它们,你只能这样做一次)。这些新视图具有逻辑功能,例如设置操作,有效比较以及可多次迭代。