2017-09-11 62 views
-2
my_dict = {"one":1, "two":2, "three":3} 
print(my_dict) 

我是新手。我聽說字典是無序的,但是輸出仍然是按照某種或者另一種順序排列的......在這裏它被顛倒過來了。詞典 - 無序,但打印相反,爲什麼?

爲什麼在一個明顯無序的字典中,上面的代碼的輸出如下所示?

{'three': 3, 'two': 2, 'one': 1} 

如果有人能解釋我會很感激。

謝謝。

+2

「無序」和「每次以隨機順序打印」不是同一回事。 「無序」意味着「你不能依賴於特定的訂單」。 – Tomalak

+0

如果你想進入本質和挑剔,你可以說一本字典是「有序的」,但你無法控制訂單是什麼。 –

+0

至於重複,我想我應該搜索,但由於我在Android應用程序,我期望在創建後創建一個重複搜索。當這不是即將到來的時候,我錯誤地認爲這不是一個重複。 –

回答

1

「無序」意味着順序是任意的和非顯着的,而不是它純粹是隨機的。此順序取決於密鑰如何由內部實現存儲,並且自1.5.x天以來已經改變了很多次。你不應該承擔這個順序什麼,只知道dict.keys()dict.values()將保持同步,即斷言:

all(dict.values()[x] == dict[dict.keys()[x]] for x in range(len(dict))) 

永遠是正確的。

+0

謝謝。非常清楚和理解。 –