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}
是什么原因以及如何解决?
答案 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}