2017-06-28 28 views
0

我在Python 2中使用字典,並且想知道dictionary.values()是否按特定順序返回值列表Python字典「.values()」是否按特定順序返回列表? [Python 2]

即它們被賦予字典的順序?

dict = {} 
dict[1] = "potato" 
dict[2] = "tomato" 
dict[3] = "orange" 
dict[4] = "carrot" 
list_val = dict.values() 

次序爲potato->tomato->orange->carrot list_val? 還是以其他順序?

這是一個簡單的例子,我的意思是它會以相同的順序返回,甚至更復雜的結構?

例如,替換字典 琴絃使它詞典的詞典

注意:這是回答了另一個線程,這是linked

另一個好答案,指的是概念答案是: This

+2

print list_val並找出? –

+2

做你嘗試過嗎?.. – Arount

+0

我想知道,如果這更復雜的數據更改 簡單的字符串可能是爲了 但類似列表,而不是「土豆」? – sun

回答

2

UPDATE:

在閱讀關於散列表的一些文檔(python使用什麼詞典來存儲key信息)後,我發現你分配鍵/值的順序並不是在has表中定義它的位置。有一個非常好的視頻HERE,它很好地解釋了哈希表如何工作以及在哈希表的鍵分配過程中發生了什麼。

基本上是一個鍵被分配的散列數目,其隨後根據其散列數目,而不是其關鍵值放置在哈希表中。該散列號首先放置在散列表上與散列號相對應的所需位置,除非已經指定了某個位置。如果其他東西已經分配到哈希表上的那個位置,那麼python會進行一些計算來選擇下一個最佳位置。這可以在has表中的所需位置之前或之後。 HERE是一些文檔,但我強烈建議觀看我喜歡的視頻,因爲它很好地解釋了這個概念。

+1

最好不要依賴於標準的'dict'對象的順序保存。如果您必須依賴訂單,請使用'OrderedDict'類型。 –

+0

@DavidZemens:我從來沒有遇到問題,它的字典在分配後保持不變。爲什麼它會改變? –

+1

看到[這裏](https://stackoverflow.com/questions/526125/why-is-python-ordering-my-dictionary-like-so)和[這裏](https://stackoverflow.com/questions/15479928 /爲什麼是在字典中 - 爲 - 集 - 任意)進行一些討論。 –