我想澄清一下Python中的詞典的一些觀點,這可能會在未來幫助其他Python愛好者。Python:詞典以及它們如何用iteritems存儲和訪問()
讓我們從一個簡單的字典開始。
foo = {'a_2': 4, 'b_2': 5, 'a_1': 2, 'b_1': 1}
和顯示foo
給人,
In [31]: foo
Out[31]: {'a_1': 2, 'a_2': 4, 'b_1': 1, 'b_2': 5}
人們可以看到,foo
似乎是 '無序'。然而,在進一步閱讀之後,我發現字典並不固有地排序,並且字典顯示時的輸出僅基於密鑰的哈希值。
我產生了困惑,當我遍歷使用foo.iteritems()
或foo.items()
字典(兩者產生相同的結果。)
for k, v in foo.iteritems():
print '{}: {}'.format(k, foo[k])
b_1: 1
b_2: 5
a_2: 4
a_1: 2
這個輸出順序不與我在foo
進入鍵/值的順序一致或當foo
被調用時它們被輸出的方式。
這是否與foo.iteritems()
如何生成其鍵/值或其他內容有關?
我在Ubuntu
您的repl可能只是爲您排序以便於閱讀。另外,foo不是「叫」。你的repl只是顯示foo。沒有辦法「打電話」字典 – acushner
當您顯示'foo'時,IPython正在對鍵進行排序。 – user2357112