Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x dict.keys()返回dict_keys类-需要查看对象_Python 3.x_Dictionary - Fatal编程技术网

Python 3.x dict.keys()返回dict_keys类-需要查看对象

Python 3.x dict.keys()返回dict_keys类-需要查看对象,python-3.x,dictionary,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'> 然而,Python3文档指出,keys方法应该返回一个,那么为什么要返回一个类呢?keys返回了一个视图。返回类的是type: v this part doesn't

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


然而,Python3文档指出,
keys
方法应该返回一个,那么为什么要返回一个类呢?

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

v this part doesn't return a view
type(test_dict.keys())
               ^this part returns a view
是由
test\u dict.keys()
返回的视图对象的类型。如果需要视图本身,请不要在Python 2中调用
type

keys()
,它会返回一个列表,对于小型词典来说这很好,但是对于大型词典来说这需要时间。所以在Python3中,它现在是一个视图对象,它是可编辑的。这个视图对象实际上是一种叫做
dict\u keys
的类


keys()
上调用
type()
将返回该项所属对象的类型,这就是为什么在Python2中它是一个
列表,而在Python3中它是一个
dict\u keys

我不理解这个问题的原因<代码>键
不返回类,它返回类的实例。我认为在使用
类型
时存在一些误解。相比之下,
type(1)
返回
,1也不是一个类。我想你是对的,我不理解type
dict\u keys
是一个dict视图类型。这样的类型不止一种
test\u dict.values()
将返回一个
dict\u values
实例,
test\u dict.items()
返回一个
dict\u items
实例。