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

时间:2012-12-14 20:56:12

标签: python python-2.x

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

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

这只是Python API中的错误还是我还缺少其他原因?

2 个答案:

答案 0 :(得分:75)

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

请注意,在Python 3中,dict.keys()的返回类型已更改:该函数现在返回“类似于集合”view而不是列表。

  

对于类似集合的视图,可以使用为抽象基类collections.abc.Set定义的所有操作(例如,==<^)。

答案 1 :(得分:0)

因为订单是有保证的。

在 Python 3.7.0 中,dict 对象的插入顺序保留特性已被声明为 Python 语言规范的官方部分。因此,您可以信赖它。

在 Python 3.6 中,如果你使用 cpython,它是有序的。

在早期版本中,可能每个人都希望 3.7