【问题标题】:Do `dict.keys()` and `dict.values()` always match up in `Python`? [duplicate]`dict.keys()` 和 `dict.values()` 在 `Python` 中是否总是匹配? [复制]
【发布时间】:2013-04-03 06:46:13
【问题描述】:

假设我有一个字典d = {'a': 1, 'b': 2},而d.keys() 返回['a', 'b'],我可以指望d.values() 成为[1, 2]吗?

【问题讨论】:

  • 是的,这是重复的,几乎所有关于 dict 的问题都已经被问过了

标签: python


【解决方案1】:

如果你想要键和值,你应该使用dict.items(),这会使问题变得毫无意义。

答案是:是的,它们通常按相同的顺序排列,但是不,您不能相信这一点。原因是keys() 将按内部顺序列出键(这取决于哈希值)。 values() 通常会通过返回每个键的值来列出值,并且该键将再次按内部顺序排列。所以是的,他们会匹配。对于 Python 内置的 dict 类,它们将匹配:

如果 items()、keys()、values()、iteritems()、iterkeys() 和 itervalues() 被调用,没有对 字典,列表将直接对应。

但这是一个实现细节,不是您的平台,而是映射类。因此,如果您的映射不是内置的 dict 类,您就不能再确定是这种情况。而对于 Python 的“鸭子打字”,你不应该假设你正在使用 dict 类。

但如上所述,这个问题毫无意义,你永远不需要相信它。

【讨论】:

  • 这不是这个问题的答案,恕我直言..
  • @Rob:有时人们问错了问题,然后他们需要知道他们应该问的问题的答案。 :-)
  • 也许,但这不是render the question meaningless
  • @Rob:不,但在这种情况下,问题毫无意义,因为您永远不需要知道订单是否相同。
  • Python reference for dict.items() 明确声明相反,除非字典被修改,否则顺序保持不变。
猜你喜欢
  • 2019-06-13
  • 2018-04-20
  • 2019-11-17
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2021-09-10
相关资源
最近更新 更多