2012-12-14 70 views
60

我会希望Python的keys方法返回一个集合而不是一个列表。因为它非常类似于hashmap的键可以提供的保证类型。具体来说,它们是独一无二的,没有排序,就像一套。然而,这个方法返回一个列表:为什么Python的dict.keys()返回一个列表而不是一个集合?

>>> d = {} 
>>> d.keys().__class__ 
<type 'list'> 

这只是Python API中的错误或有我错过了一些其他原因?

回答

58

其中一个原因是dict.keys()早于集合引入语言。

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

+5

它是一个视图,而不是一个列表/设置/等。因为很少需要复制所有密钥。 – delnan

+9

,那些视图可以作为'set()'处理!允许'dict.keys()| set()'操作。 Py3的岩石:) – yota

+0

如果你坚持使用Py2,你可以通过调用'dict.viewkeys()'并使用集合操作'|','&'来实现。 – Tobia

相关问题