通过讨论here,我了解到字典通常没有排序,至少不是以可靠的方式排序。那么为什么字典方法keys(),values(),items()返回有序列表而不是例如无序集?仅仅是为了方便起见还是有一些潜在的推理?
答案 0 :(得分:11)
他们不返回列表或集合;他们返回视图。只要值是可哈希的,键视图就类似于集合,项目视图就像集合一样,但是值视图不能像集合一样,因为可能存在重复的值。
在Python 3之前,它们返回列表,但是那些方法早于引入集合。 Sets were introduced in Python 2.4,而keys
/ values
/ items
自至少1.4起就存在,并且可能早于1.0。
答案 1 :(得分:2)
基于Python docs,sets
模块直到Python 2.3建立字典类型之后才引入。重新定义keys()
,values()
等的工作方式将是一项重大突破。
在Python 3中,这些函数返回 view对象,而不是列表,尽管这些列表是可迭代的,但并不像有序列表那样建议显式排序。