Python 命令 dict(zip()) 更改了 a 的顺序



我有两个列表,我正在将它们映射到字典中。

这两个列表是——

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}

最新更新