我在Python中有這個字典;如何在python中打印未排序的字典?
d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
當我打印字典;
for k,v in d.items():
print k
我明白了;
a
b
g
它似乎像Python自動排序字典!我怎樣才能得到原始的未分類列表?
迦特
我在Python中有這個字典;如何在python中打印未排序的字典?
d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
當我打印字典;
for k,v in d.items():
print k
我明白了;
a
b
g
它似乎像Python自動排序字典!我怎樣才能得到原始的未分類列表?
迦特
CPython的實現細節:鍵和值指的是這個非隨機的,不同的Python實現變化的任意順序排列,取決於字典的歷史插入和刪除。
你可以使用一個清單,2元組,而不是:
d = [('b', 'beta'), ('g', 'gamma'), ('a', 'alpha')]
類似,但更好的解決辦法是在Wayne's answer概述。
詞典中沒有順序可以說,沒有原始未分類列表。
請勿使用字典。或者使用Python 2.7/3.1 OrderedDict
類型。
不,python不排序字典,它會太昂貴。 items()
的順序是任意的。從python文檔:
CPython的實現細節:按鍵 和值在任意 秩序,產生非隨機的上市,改變 不同的Python實現,並 取決於 插入和刪除字典的歷史。
正如前面所提到的,字典不會對您放入的物品進行排序或取消排序。當您檢索它時,它的排列方式是「魔術」。如果你想保留一個訂單-sorted或不需要,你還需要綁定一個列表或元組。
這會給你保留順序列表相同的字典結果:
greek = ['beta', 'gamma', 'alpha']
d = {}
for x in greek:
d[x[0]] = x
只需更改[],以()如果您有沒有需要改變原來的列表/訂單。
+1這是一個很好的解決方案:) – Skilldrick 2010-05-28 13:25:10
我得到了排序結果。你使用的是什麼樣的python – Samuel 2014-01-10 05:24:03
@Samuel,你的意思是你的字典以明顯的排序順序打印出來?因爲這完全是由「意外」造成的 - 這完全取決於底層的Python實現。它可能會打印出您輸入的相同順序,可能不會。 – 2014-01-10 13:15:36
正如Marcelo Cantos所提到的,較新版本的Python提供了OrderedDict,它保留了插入順序。 – 2010-05-28 12:06:42
@John:作爲OP提及他使用內置的'字典' – SilentGhost 2010-05-28 12:08:01