我本来希望 Python 的 keys 方法返回一个集合而不是一个列表。因为它最类似于 hashmap 的键所提供的保证。具体来说,它们是唯一的并且没有排序,就像一个集合。但是,此方法返回一个列表:
>>> d = {}
>>> d.keys().__class__
<type 'list'>
这只是 Python API 中的一个错误,还是我错过了其他一些原因?
我本来希望 Python 的 keys 方法返回一个集合而不是一个列表。因为它最类似于 hashmap 的键所提供的保证。具体来说,它们是唯一的并且没有排序,就像一个集合。但是,此方法返回一个列表:
>>> d = {}
>>> d.keys().__class__
<type 'list'>
这只是 Python API 中的一个错误,还是我错过了其他一些原因?
一个原因是它dict.keys()
早于将集合引入语言。
请注意,dict.keys()
Python 3 中的返回类型已更改:该函数现在返回“类似集合”的视图而不是列表。
对于类似集合的视图,为抽象基类定义的所有操作
collections.abc.Set
都可用(例如,==
、<
或^
)。
因为订购是有保证的。
在 Python 3.7.0中,dict 对象的插入顺序保存特性已被声明为 Python 语言规范的官方部分。因此,您可以依赖它。
在 Python 3.6 中,如果你使用 cpython,它是有序的。
在早期版本中,可能每个人都希望 3.7
在