【发布时间】:2013-04-03 06:46:13
【问题描述】:
假设我有一个字典d = {'a': 1, 'b': 2},而d.keys() 返回['a', 'b'],我可以指望d.values() 成为[1, 2]吗?
【问题讨论】:
-
是的,这是重复的,几乎所有关于
dict的问题都已经被问过了
标签: python
假设我有一个字典d = {'a': 1, 'b': 2},而d.keys() 返回['a', 'b'],我可以指望d.values() 成为[1, 2]吗?
【问题讨论】:
dict 的问题都已经被问过了
标签: python
如果你想要键和值,你应该使用dict.items(),这会使问题变得毫无意义。
答案是:是的,它们通常按相同的顺序排列,但是不,您不能相信这一点。原因是keys() 将按内部顺序列出键(这取决于哈希值)。 values() 通常会通过返回每个键的值来列出值,并且该键将再次按内部顺序排列。所以是的,他们会匹配。对于 Python 内置的 dict 类,它们将匹配:
如果 items()、keys()、values()、iteritems()、iterkeys() 和 itervalues() 被调用,没有对 字典,列表将直接对应。
但这是一个实现细节,不是您的平台,而是映射类。因此,如果您的映射不是内置的 dict 类,您就不能再确定是这种情况。而对于 Python 的“鸭子打字”,你不应该假设你正在使用 dict 类。
但如上所述,这个问题毫无意义,你永远不需要相信它。
【讨论】:
render the question meaningless。
dict.items() 明确声明相反,除非字典被修改,否则顺序保持不变。