我在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,那么为什么要返回一个类?
答案 0 :(得分:8)
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
。