Python字典:keys()和values()的顺序总是一样吗?
看起来字典的 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()
等方法也会按照和对应列表相同的顺序进行遍历。