在Python3中通过索引访问dict_keys元素

我试图通过它的索引访问一个dict_key的元素:

test = {'foo': 'bar', 'hello': 'world'} keys = test.keys() # dict_keys object keys.index(0) AttributeError: 'dict_keys' object has no attribute 'index' 

我想得到foo

同:

 keys[0] TypeError: 'dict_keys' object does not support indexing 

我怎样才能做到这一点?

在字典上调用list()

 keys = list(test) 

在Python 3中, dict.keys()方法返回一个字典视图对象 ,作为一个集合。 直接对字典进行迭代也会生成密钥,因此将字典转换为列表将生成所有密钥的列表:

 >>> test = {'foo': 'bar', 'hello': 'world'} >>> list(test) ['foo', 'hello'] >>> list(test)[0] 'foo' 

不是一个完整的答案,但也许是一个有用的提示。 如果它真的是你想要的第一个项目,那么

 next(iter(q)) 

比…快得多

 list(q)[0] 

因为整个事情不需要存储在内存中。

对于10.000.000个项目,我发现它快了近40,000倍。

*第一个项目,如果一个字典在Python 3.6之前只是一个伪随机项目(之后它是在标准实现中订购的,尽pipe不build议依赖它)。