如何获得结果字典中的预期订单?

时间:2015-04-16 14:55:38

标签: python

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}

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

2 个答案:

答案 0 :(得分:5)

python字典的内部订单是随机的,您不应该依赖它。

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

答案 1 :(得分:2)

dict s是无序的,因为密钥没有被比较,它们的哈希值是。

使用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}