dict.keys()返回dict_keys类 - 期望的视图对象

Mik*_*lla 2 dictionary python-3.x

我在Python 2.7.3和Python 3.2.3中运行以下代码:

test_dict = {'foo':'bar'}
type(test_dict.keys())
Run Code Online (Sandbox Code Playgroud)

在Python 2中,输出是:

<type 'list'>
Run Code Online (Sandbox Code Playgroud)

在Python 3中:

<class 'dict_keys'>
Run Code Online (Sandbox Code Playgroud)

但是,Python 3文档声明该keys方法应该返回一个视图对象,那么为什么要返回一个类呢?

Inb*_*ose 8

keys()在Python 2中返回一个列表,这对于小字典很好 - 但对于大字典,这需要时间.所以在Python 3中它现在是一个可迭代的视图对象.这个视图对象实际上是一种叫做的类dict_keys.

调用type()keys()返回对象的产品,这就是为什么在Python2它是一种类型list,并在Python 3这是一个dict_keys.