【问题标题】:Python dictionaries - Why do keys(), values() return lists, not sets? [duplicate]Python 字典 - 为什么键(),值()返回列表,而不是集合? [复制]
【发布时间】:2018-08-10 16:25:08
【问题描述】:

here 的讨论中,我了解到字典通常没有排序,至少不是以可靠的方式。那么为什么字典方法键(),值(),项目()返回有序列表而不是例如无序集?这只是为了方便还是有一些潜在的原因?

【问题讨论】:

  • 首先,values保证唯一..
  • 字典键和值(如果分别迭代)总是按相同的顺序。对任何一个使用集合都会使这成为不可能。

标签: python list dictionary unordered


【解决方案1】:

它们不返回列表或集合;他们返回视图。键视图是类集合的,项目视图是类集合的,只要值是可散列的,但值视图不能类集合,因为可能存在重复值。

在 Python 3 之前,它们返回列表,但这些方法早于集合的引入。 Sets were introduced in Python 2.4,而 keys/values/items 至少从 1.4 开始就已经存在,并且可能在 1.0 之前。

【讨论】:

  • 感谢所有答案,这真的很有帮助。
【解决方案2】:

基于Python docs,直到Python 2.3 才引入sets 模块,也就是字典类型建立之后。重新定义keys()values() 等的工作方式将是一个重大改变。

在 Python 3 中,这些函数返回视图对象,而不是列表,虽然可迭代,但不像有序列表那样建议显式排序。

【讨论】:

  • 注意在 Python 3.7+ 中,字典应该被认为是有序的。
猜你喜欢
  • 1970-01-01
  • 2018-11-01
  • 2012-12-02
  • 2019-05-20
  • 2019-08-26
  • 2023-01-30
  • 2019-05-08
  • 2011-04-03
  • 2018-11-01
相关资源
最近更新 更多