2014-10-30 10 views
0
>>> basket = {'fruit' : 'apple','veg' : 'potato', 'grain' : 'rice', 'liquor' : 'wine'} 
>>> for k,v in basket.iteritems(): 
...  print k,v 
... 
veg potato 
liquor wine 
fruit apple 
grain rice 
>>> 

從上面的例子可以看出,鍵值對不是從左到右或從右到左打印的。爲什麼Python中的iteritems()函數以隨機順序檢索鍵值對?

爲了得到一個排序結果,我用

>>> basket = {'fruit' : 'apple','veg' : 'potato', 'grain' : 'rice', 'liquor' : 'wine'} 
>>> for k,v in sorted(basket.iteritems()): 
...  print k,v 
... 
fruit apple 
grain rice 
liquor wine 
veg potato 
>>> 

當我試圖讓鍵值對的指數,我得到

>>> basket = {'fruit' : 'apple','veg' : 'potato', 'grain' : 'rice', 'liquor' : 'wine'} 
>>> for k,v in enumerate(basket.iteritems()): 
...  print k,v 
... 
0 ('veg', 'potato') 
1 ('liquor', 'wine') 
2 ('fruit', 'apple') 
3 ('grain', 'rice') 
>>> 

爲什麼會出現這種情況?如何從左至右打印字典定義中顯示的鍵值對?

+3

詞典沒有排序。 – 2014-10-30 15:15:04

回答

1

如果你曾經做過一個哈希表,你知道這個訂單沒有必要存儲。

事實上,這是額外的工作。

如果你想保留插入物品的順序,你可以使用collections.OrderedDict,這就是那個。