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

时间:2014-01-09 13:16:29

标签: python-3.x dictionary

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

test_dict = {'foo':'bar'}
type(test_dict.keys())

在Python 2中输出为:

<type 'list'>

在Python 3中:

<class 'dict_keys'>

但是,Python 3文档指出keys方法应该返回view object,那么为什么要返回一个类?

2 个答案:

答案 0 :(得分:8)

Python 2中的

keys()返回一个列表,对于小词典来说很好 - 但对于大词典,这需要时间。所以在Python 3中它现在是一个可迭代的视图对象。此视图对象实际上是一种名为dict_keys的类。

type()上调用keys()会返回该项所在的对象类型,这就是为什么在Python2中它是list,而在Python 3中它是dict_keys }。

答案 1 :(得分:2)

keys返回了一个视图。它是type返回一个类:

v this part doesn't return a view
type(test_dict.keys())
               ^this part returns a view

<class 'dict_keys'>test_dict.keys()返回的视图对象的类型。如果您想要视图本身,请不要致电type