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



我在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 方法应该返回一个视图对象,那么为什么要返回一个类呢?

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

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

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

最新更新