這是我的代碼:如何顛倒python字典中鍵的順序?
a = {0:'000000',1:'11111',3:'333333',4:'444444'}
for i in a:
print i
它表明:
0
1
3
4
,但我想讓它顯示:
4
3
1
0
所以,我該怎麼辦?
這是我的代碼:如何顛倒python字典中鍵的順序?
a = {0:'000000',1:'11111',3:'333333',4:'444444'}
for i in a:
print i
它表明:
0
1
3
4
,但我想讓它顯示:
4
3
1
0
所以,我該怎麼辦?
鍵在重述,順序是任意的。這只是巧合,他們是按排序順序排列的。
>>> a = {0:'000000',1:'11111',3:'333333',4:'444444'}
>>> a.keys()
[0, 1, 3, 4]
>>> sorted(a.keys())
[0, 1, 3, 4]
>>> reversed(sorted(a.keys()))
<listreverseiterator object at 0x02B0DB70>
>>> list(reversed(sorted(a.keys())))
[4, 3, 1, 0]
實際上,您可以通過執行'sorted(a.keys(),reverse = True)'而不是使用'reversed()'內建函數來加快翻轉的情況。 – ncoghlan 2011-03-28 10:54:23
嘗試:
for i in sorted(a.keys(), reverse=True):
print i
字典是無序的,所以你不能扭轉他們。當前輸出的順序是任意的。
這就是說,你可以訂購當然鍵:
for i in sorted(a.keys(), reverse=True):
print a[i];
,但是這給你的相反的順序進行排序鍵,不一定是他們如何被添加鍵的順序相反。即它不會給你1 0 3
如果你的字典是:
a = {3:'3', 0:'0', 1:'1'}
for i in reversed(sorted(a.keys())):
print i
我認爲這是一個「壞」的答案,因爲提問者顯然有一個關於python「dict」函數的錯誤概念,應該解決這個錯誤概念,而不是給他看起來像他想要的東西。 – 2011-03-28 07:04:20
你說得對,我應該更仔細地閱讀這個問題。 – Simon 2011-03-28 07:36:02
Upvote:StackExchange不是一個懲教機構。 ifLoop顯示如何提供幫助,而不僅僅是正確的。 – 2014-12-12 19:25:10
Python詞典沒有與它們關聯的任何「順序」。這只是一個'巧合',字典是打印相同的順序。沒有保證字典中的項目以任何順序出現。
如果你想處理訂購,你需要將字典轉換爲列表。
a = list(a) # keys in list
a = a.keys() # keys in list
a = a.values() # values in list
a = a.items() # tuples of (key,value) in list
現在,您可以對列表進行排序正常,例如,a.sort()
和扭轉它爲好,例如,a.reverse()
這隻會將鍵放在列表中。你會失去價值。 – 2011-03-28 08:13:00
+1,用於解釋所有其他答案實際上轉換爲列表。 – Boz 2014-09-01 12:14:57
Python的字典中沒有2.x的有序但是3.1中有一個有序的字典實現。
+1爲OrderedDict。事實上,它也可以在Python 2.7中使用:http://docs.python.org/library/collections.html#collections.OrderedDict – 2011-03-28 08:14:22
字典沒有訂單。這些關鍵字出現在似乎只是運氣的排序順序中(以及您不能依賴的實現細節)。沒有固有的順序。 – 2011-03-28 10:01:30