如何在结果字典中获取预期顺序


result = {}
a = ["a","b","c"]
b = [1, 2, 3]
for i in range(3):
  result[a[i]] = b[i]
print result

我希望得到以下结果:{'a': 1, 'b': 2, 'c': 3}

但真正的是{'a': 1, 'c': 3, 'b': 2}

原因是什么以及如何解决?

python字典有一个随机的内部顺序,你不应该依赖它。

如果要保留插入对象的顺序,则应使用 collections.OrderedDict

dict

无序的,因为键不是比较的,它们的哈希是。

使用collections模块中的OrderedDict来维护您输入的顺序。

>>> import collections
>>>
>>> a = ["a", "b", "c"]
>>> b = [1, 2, 3]
>>>
>>> result = collections.OrderedDict(zip(a, b))
>>> result
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> dict(result) # no longer ordered
{'c': 3, 'a': 1, 'b': 2}

最新更新