Python字典:keys()和values()的顺序总是一样吗?

422 投票
9 回答
135989 浏览
提问于 2025-04-15 11:27

看起来字典的 keys()values() 方法返回的列表总是成一对一的关系(前提是这两个方法调用之间字典没有被修改)。

举个例子:

>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
    print d[k[i]] == v[i]

True
True
True

如果在调用 keys()values() 之间没有修改字典,假设上面的循环总是会打印出 True,这样的想法是否错误呢?我找不到任何文档来确认这一点。

9 个回答

51

是的,在Python 2.x中这是有保证的:

如果在没有对字典进行任何修改的情况下遍历键、值和项目的视图,那么这些项目的顺序将会是直接对应的。

105

是的,你观察到的确实是一个保证的特性——如果字典没有被改变,keys()values()items() 返回的列表顺序是一样的。iterkeys() 等方法也会按照和对应列表相同的顺序进行遍历。

472

发现了这个:

如果在没有对字典进行任何修改的情况下调用 items()keys()values()iteritems()iterkeys()itervalues(),那么这些列表会直接对应。

可以在 2.x 文档3.x 文档 中查看。

撰写回答