【发布时间】:2011-11-09 22:27:39
【问题描述】:
我在使用collections.Counter 的viewkeys()、viewitems() 和viewvalues() 方法时遇到了这三种类型。
这三个方法返回的值是dict_keys、dict_items和dict_values类型。
正如我所注意到的,它们是可迭代的。
但我的问题是,为什么存在这三种类型?或者它们的用途是什么?
【问题讨论】:
标签: python list dictionary
我在使用collections.Counter 的viewkeys()、viewitems() 和viewvalues() 方法时遇到了这三种类型。
这三个方法返回的值是dict_keys、dict_items和dict_values类型。
正如我所注意到的,它们是可迭代的。
但我的问题是,为什么存在这三种类型?或者它们的用途是什么?
【问题讨论】:
标签: python list dictionary
What's new in 2.7 文档是介绍这些的地方之一。这些“视图”是为 Python 3 引入的(建议 here)(并向后移植到 2.7,如您所见),作为它们所指的 dict 片段的最佳选择。
在我们有简单地创建列表的keys/values/items 方法之前。这会通过复制字典的信息来浪费内存,我们有 iterkeys/itervalues/iteritems 方法,它们不会浪费内存,但功能不是很好(你唯一能做的就是迭代它们,并且你只能这样做一次)。这些新视图具有逻辑特性,例如集合操作、高效比较和可多次迭代。
【讨论】: