2013-12-22 121 views
-2

所以我對編程非常陌生,我正在研究一個基於文本的小型遊戲進行練習。無論如何,這是我的問題。「用於詞典中的項目」以隨機順序顯示?

x=1 
    for items in hero.basics: 
     print(x, ". ", items, sep = "") 
     x += 1 

和字典,

self.basics = {"Attack" : self.attack, "Potion" : self.potion} 

所以我需要它以相同的順序與實際辭典顯示,但它總是隨機顯示。

有什麼建議嗎?

+0

我不確定你的問題是什麼,但是,字典是無序的。 – keyser

+0

這不是隨機的。一旦解釋器啓動並設置散列種子,這是一個非常確定性的順序。也許這不是你所期望的,因爲你忘了閱讀文檔... – JBernardo

+0

爲什麼這個問題得到那些接近的選票?對所假設的重複問題的答案告訴你爲什麼,但不提供替代解決方案(而這裏的答案都是這樣)。 – Makoto

回答

4

這是一個問題:字典是無序的。他們不是假定要訂購的,它們也不是按順序存儲的。

看看這個控制檯會話:

>>> d = {'a':5, 'b':6, 'c': 3} 
>>> d 
{'a': 5, 'c': 3, 'b': 6} 

看到了嗎?

然而,你可以像這樣同時通過按鍵循環排序是:

for k in sorted(d): 

但字典本身,將保持未排序。或者,你可以看看collections.OrderedDict(這是dict的一個子類),確實有一個已排序的字典。

+0

哦,錯過了格式。謝謝@Makoto! – aIKid

2

如果你真的需要一個有序的字典,那麼collections.OrderedDict是你在找什麼。從文檔:

有序字典就像普通字典,但他們記得項目被插入的順序。在迭代有序字典時,將按照首次添加密鑰的順序返回項目。

相關問題