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}