我有一本字典:如何從左至右打印字典的值?
a = {"w1": "wer", "w2": "qaz", "w3": "edc"}
當我嘗試打印它的價值,他們是從右側印到左:
>>> for item in a.values():
print item,
edc qaz wer
我希望他們從左至右打印:
wer qaz edc
我該怎麼辦?
我有一本字典:如何從左至右打印字典的值?
a = {"w1": "wer", "w2": "qaz", "w3": "edc"}
當我嘗試打印它的價值,他們是從右側印到左:
>>> for item in a.values():
print item,
edc qaz wer
我希望他們從左至右打印:
wer qaz edc
我該怎麼辦?
假設你希望他們在按鍵的字母順序排列,你可以做這樣的事情:
a = {"w1": "wer", "w2": "qaz", "w3": "edc"} # your dictionary
keylist = a.keys() # list of keys, in this case ["w3", "w2", "w1"]
keylist.sort() # sort alphabetically in place,
# changing keylist to ["w1", "w2", w3"]
for key in keylist:
print a[key] # access dictionary in order of sorted keys
爲@ IgnacioVazquez - 艾布拉姆斯提到的,這是沒有這樣的事情在字典order
,但你可以做到使用來自http://pypi.python.org/pypi/odict
的訂購字典odict
的類似效果也檢出PEP372以獲得更多討論和odict修補程序。
你可以使用collections.OrderedDict
(python 2.7或更新版本 - 有一個ActiveState配方,它爲python 2.4或更新版本(我認爲)提供了這個功能)來存儲你的項目。當然,您需要按照正確的順序將這些項插入字典中({}
語法將不再起作用 - 也不會將key = value傳遞給構造函數,因爲正如其他人所提到的,那些依賴於常規字典沒有訂單的概念)
+1每當有人開始要求輸入字符串以外的任意或排序的鍵順序時,OrderedDict或類似的自定義類就是他們之後的東西。 –
字典使用散列值關聯值。排序字典的唯一方法看起來是這樣的:
dict = {}
x = [x for x in dict]
# sort here
y = []
for z in x: y.append(dict[z])
我沒有做在python任何實際工作一段時間,所以我可能會有點生疏。如果我錯了,請糾正我。
這似乎是相關的:http://stackoverflow.com/questions/364519/in-python-how-to-i-iterate-over-a-dictionary-in-sorted-order – dmh