Dict会以相同的顺序返回键和值吗?

Ube*_*per 8 python

可能重复:
Python字典:keys()和values()总是相同的顺序?

如果我在python中有一个dictonary,那么.keys和.values会以相同的顺序返回相应的元素吗?

例如

foo = {'foobar' : 1, 'foobar2' : 4, 'kittty' : 34743}
Run Code Online (Sandbox Code Playgroud)

对于它返回的键:

>>> foo.keys()
['foobar2', 'foobar', 'kittty']
Run Code Online (Sandbox Code Playgroud)

现在,foo.values()将返回元素的顺序与其对应的键相同吗?

Dav*_*ron 18

Python文档很难改进:

键和值以任意顺序列出,这是非随机的,在Python实现中各不相同,并且取决于字典的插入和删除历史.如果items(),keys(),values(),iteritems(),iterkeys(),和itervalues()被称为中间没有修改的字典,列表会直接对应.这允许(value, key)使用zip(): pairs = zip(d.values(), d.keys()).相同的关系为对iterkeys()itervalues()方法创建对:pairs = zip(d.itervalues(), d.iterkeys())为对提供相同的值.创建相同列表的另一种方法是pairs = [(v, k) for (k, v) in d.iteritems()]

所以,简而言之,"是"警告你不得在你的电话keys()和你的电话之间修改字典values().