2010-10-04 33 views
0

我有以下的解釋:
{2009: [12, 11, 10, 9], 2010: [1]}的關鍵逆轉字典不起作用

我想反向排序,因此,2010年是第一位的。這裏的代碼:

def dictSort(dict): 
    items = dict.items() 
    items.sort(reverse=True) 
    dict = {} 
    for item in items: 
     dict[item[0]] = item[1] 
    return dict 

但作爲回報,我得到了相同的字典。在for循環之前,一切看起來都很好。這是爲什麼 ?

回答

2

一本字典是無序的,無論你放入它什麼都不按照你添加它的順序存儲。

如果你想要做的東西給它按排序順序,你可以這樣做:

items = dict.items.sort(reverse=True) 
for item in items: 
    doSomething(item,mydict[item]) 

for key,value in iter(sorted(mydict.iteritems(),reverse=True)) 
    doSomething(key,value) 
+0

dict.items是一個函數,而不是一個屬性;(順便說一句,請不要使用字典的變量名!)排序就地工作,所以你不能分配它的輸出(這是None)。也許在排序(mydict.items())中的項目:... – tokland 2010-10-04 18:33:23

0

字典沒有一個訂單。如果您嘗試以特定順序輸出詞典,請嘗試抓取所有鍵,對它們進行排序,然後使用該列表來知道輸出內容的順序。

0

在這裏,人們產生關鍵的反轉順序字典的項目方式:

def dict_sort(thisdict, reverse=True): 
    return ((key, thisdict[key]) for key in sorted(thisdict, reverse=reverse)) 

mydict = {2009: [12, 11, 10, 9], 2010: [1]} 
for i in dict_sort(mydict): 
    print "%i: %s" % i