我在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
。