为什么Python的dict.keys()返回一个列表而不是一个集合?

one*_*elf 79 python python-2.x

我希望Python的key方法返回一个集合而不是列表.因为它最类似于hashmap的键所提供的保证.具体来说,它们是唯一的,没有排序,就像一组.但是,此方法返回一个列表:

>>> d = {}
>>> d.keys().__class__
<type 'list'>
Run Code Online (Sandbox Code Playgroud)

这只是Python API中的一个错误,还是有其他原因让我失踪?

NPE*_*NPE 82

一个原因是dict.keys()在将集合引入语言之前.

请注意,dict.keys()Python 3 中的返回类型已更改:该函数现在返回视图而不是列表.

  • 那些视图可以作为`set()`来处理!允许`dict.keys()| set()`operations.Py3岩石:) (26认同)
  • 它是一个视图而不是列表/集/等.因为很少需要复制所有密钥. (6认同)
  • 如果你遇到Py2,可以通过调用`dict.viewkeys()`并将其与set操作`|`,`&`一起使用来做同样的事情. (2认同)