当我访问使用相同键映射的2个词典中的元素时,它们是否始终以相同顺序被访问?
例如,假设我有字典1和字典2。
Dictionary 1:
Key 1: a1
Key 2: a2
Dictionary 2:
Key 1: b1
Key 2: b2
如果我使用for循环访问这2个字典的元素,则使用如下代码:
for element in dictionary.values():
然后可以匹配
a1:b1
和a2:b2
吗? 最佳答案
不,没有这样的保证。
这是一个具体的例子,说明了这一点:
>>> dict1 = {str(i):None for i in range(10000)}
>>> dict2 = {}
>>> dict2.update(dict1)
字典相等,但是键以不同的顺序返回:
>>> dict1 == dict2
True
>>> dict1.keys() == dict2.keys()
False
如果您想要相同的遍历顺序,则可以并行遍历
sorted(dict1.keys())
和sorted(dict2.keys())
:>>> sorted(dict1.keys()) == sorted(dict2.keys())
True
根据您的用例(即插入顺序),
collections.OrderedDict
也可能有用。