2016-03-13 83 views
0

我只想排序VALUES的字典,但不是KEYS。我扭轉了字典,所以這不是問題。我只是想要對值進行排序。以下是我試過的代碼:如何對字典的值進行排序?

def reverse_dictionary(olddict): 
newdict = {} 
for key, value in olddict.items(): 
    for string in value: 
     newdict.setdefault(string.lower(), []).append(key.lower()) 

for key, value in newdict.items(): 
    newdict[key] = sorted(value) 
    return newdict 

olddict=({'astute': ['Smart', 'clever', 'talented'], 
      'Accurate': ['exact', 'precise'], 
      'exact': ['precise'], 
      'talented': ['smart', 'keen', 'Bright'], 
      'smart': ['clever', 'bright', 'talented']}) 
result=reverse_dictionary(olddict) 
print(result) 

我得到的輸出是:

{'keen': ['talented'], 'precise': ['exact', 'accurate'], 
'exact': ['accurate'], 'bright': ['talented', 'smart'], 
'clever': ['smart', 'astute'], 'talented': ['smart', 'astute'], 
'smart': ['talented', 'astute']} 

VALUES沒有排序輸出。請幫忙。

回答

1

您正在返回你的第二個for循環的早期

def reverse_dictionary(olddict): 
    newdict = {} 
    for key, value in olddict.items(): 
     for string in value: 
      newdict.setdefault(string.lower(), []).append(key.lower()) 

    for key, value in newdict.items(): 
     newdict[key] = sorted(value) 
    return newdict 

olddict=({'astute': ['Smart', 'clever', 'talented'], 
      'Accurate': ['exact', 'precise'], 
      'exact': ['precise'], 
      'talented': ['smart', 'keen', 'Bright'], 
      'smart': ['clever', 'bright', 'talented']}) 
result=reverse_dictionary(olddict) 

print(result) 
+0

謝謝@ quikst3r –

3

您在第一循環迭代返回詞典:

for key, value in newdict.items(): 
    newdict[key] = sorted(value) 
    return newdict 

相反,你可以只返回新字典使用字典理解:

return {k: sorted(v) for k, v in newdict.items()} 
+0

謝謝@soon您的回答也工作。 –

相關問題