Python字典-为什么keys(),values()返回列表而不是集合?

时间:2018-08-10 16:25:09

标签: python list dictionary unordered

通过讨论here,我了解到字典通常没有排序,至少不是以可靠的方式排序。那么为什么字典方法keys(),values(),items()返回有序列表而不是例如无序集?仅仅是为了方便起见还是有一些潜在的推理?

2 个答案:

答案 0 :(得分:11)

他们不返回列表或集合;他们返回视图。只要值是可哈希的,键视图就类似于集合,项目视图就像集合一样,但是值视图不能像集合一样,因为可能存在重复的值。

在Python 3之前,它们返回列表,但是那些方法早于引入集合。 Sets were introduced in Python 2.4,而keys / values / items自至少1.4起就存在,并且可能早于1.0。

答案 1 :(得分:2)

基于Python docssets模块直到Python 2.3建立字典类型之后才引入。重新定义keys()values()等的工作方式将是一项重大突破。

在Python 3中,这些函数返回 view对象,而不是列表,尽管这些列表是可迭代的,但并不像有序列表那样建议显式排序。