如果我迭代散列一次,然後再次這樣做,而不修改內容,密鑰是否保證以相同的順序出現?如果未修改,迭代之間是否保留哈希排序?
快速測試顯示的那麼多:
> h = {'a' => 1, 'b' => 2, 'c' => 3}
> 100_000.times.map { h.to_s == h.to_s }.all?
=> true
另一個問題,如果上面的允許,我可以通過它迭代只改變值,無需添加任何新的密鑰,並有按鍵的順序是不變?
相似,這條巨蟒的問題:Do dicts preserve iteration order if they are not modified?
與所提出的重複,我不感興趣的元件是否具有完全指定的順序,只限制不經任何改動連續兩次迭代提供相同的序列。
由於兩個答案都表示,插入順序被保留。這讓那些認爲「有序」意味着「排序」的人感到困惑,除非我們允許哈希類中的隱形時間戳,否則他們就不是這樣。 –
[Ruby:Hash.keys和Hash.values方法返回的鍵/值的順序是什麼?](http://stackoverflow.com/questions/5208512/ruby-what-is-the-order- of-keys-values-by-hash-keys-and-hash-values-met) –