擅长:python、mysql、java
<p>许多dictionary(又称map)实现都基于<a href="https://en.wikipedia.org/wiki/Hash_table" rel="nofollow noreferrer">hash table</a>数据结构,以实现非常快速的检索。这意味着键被散列到一些看起来随机的索引中,值被放置在这些槽中。在对字典进行迭代时,最容易按顺序遍历数组,这意味着顺序对应于键的哈希顺序</p>
<p>至于为什么顺序可能不同,有两个很好的理由:</p>
<ol>
<li><p>由于不同的默认值、不同的历史记录等,哈希表的容量可能不同。因此,当表的大小不同时,哈希顺序也会不同</p></li>
<li><p>散列顺序可能会被故意随机分配以防止攻击。当哈希函数是固定的且已知时,攻击者可以尝试将多个项目放入同一个存储桶,从而导致哈希表的速度降低到链表的速度。另请参见:<a href="https://stackoverflow.com/questions/14956313/dictionary-ordering-non-deterministic-in-python3">Why is dictionary ordering non-deterministic?</a></p></li>
</ol>