2016-03-18 18 views
0

我用下面的代碼進行排序我的字典:我如何排序一個字典的關鍵,而忽略大小寫?

meaningHash = {'Banana': 'fruit', 'apple': 'fruit'} 
sortedMeaningHash = collections.OrderedDict(sorted(meaningHash.items())) 
print sortedMeaningHash 

結果是:

OrderedDict([('Banana', 'fruit'), ('apple', 'fruit')]) 

和所需的輸出是:

OrderedDict([('apple', 'fruit'), ('Banana', 'fruit')]) 
+1

使用排序'key'爭論......會後回答 –

回答

6

可以使用key參數sorted用小寫排序:

def check_lower(pair): 
    key,value = pair 
    return (key.lower(),value) 

meaningHash={'Banana':'fruit','apple':'fruit'} 

sortedMeaningHash = collections.OrderedDict(sorted(meaningHash.items(), 
                key=check_lower)) 
print(sortedMeaningHash) 

key是一個可調用的返回,每個項目應該由排序的表示。因此它需要的項目對對於字典中的每個元素,並在鍵調用.lower()

+0

謝謝做工精細! – DavidS

4

添加一個關鍵ARG到sorted撥打:

sortedMeaningHash = collections.OrderedDict(sorted(meaningHash.items(), key=lambda x: x[0].lower())) 
+0

如果沒有與這兩個大寫和小寫的關鍵,則字典應由值進行排序,但你扔掉你的lambda表達式的值。 –