在 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

我怎样才能做到这一点?

原文由 fj123x 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 825
2 个回答

改为在字典上调用 list()

 keys = list(test)

在 Python 3 中, dict.keys() 方法返回一个 字典视图对象,它充当一个集合。直接遍历字典也会产生键,因此将字典转换为列表会得到所有键的列表:

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

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

不是一个完整的答案,但也许是一个有用的提示。如果它确实是您想要的第一项*,那么

next(iter(q))

list(q)[0]

对于大口述,因为整个事情不必存储在内存中。

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

*在 Python 3.6 之前,如果 dict 只是一个伪随机项,则第一项(之后它在标准实现中被排序,尽管不建议依赖它)。

原文由 Mark 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题