我有两个列表,我正在将它们映射到字典中。
这两个列表是——
a = ['a','b','c','d']
和b = [1,2,3,4]
.
当我运行命令时
>>> d = dict(zip(a,b))
>>> d
我得到
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
而期望值是{'a': 1, 'b': 2, 'c': 3, 'd': 4}
为什么键的顺序会发生变化?
dict
的键中没有固有的"明显"顺序。诚然,文档只为CPython详细说明了它,但也注意到
如果 items((、keys((、values((、iteritems((、iterkeys(( 和 调用 itervalues(( 时不对 字典,列表将直接对应。
它省略说,否则他们可能会改变。
(请注意,有一个顺序,但它涉及键的哈希值,所以它不像"a before b"那么容易,特别是,自从几年前以来,它很容易随着可执行文件的每个新调用而更改。
字典中没有顺序。
{'a': 1, 'b': 2, 'c': 3, 'd': 4} == {'a': 1, 'c': 3, 'b': 2, 'd': 4}