`dict.keys()`和`dict.values()`总是在`Python`中匹配?

时间:2013-04-03 06:46:13

标签: python

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

1 个答案:

答案 0 :(得分:2)

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

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

  

如果items(),keys(),values(),iteritems(),iterkeys()和   调用itervalues()而不对其进行干预修改   字典,列表将直接对应。

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

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