a = [1,1,1,11,2,2,2,2,2,3,3,3,3,4,4,4,4,8,11,8,8,5,11,7,7,7,7,7,]
freq = dict()
for i in a :
freq[i] = freq.get(i, 0) 1
fsort = dict(sorted(freq.items(), key=lambda item:item[1], reverse=True))
print(fsort)
上面的代碼計算數字的頻率并回傳一個頻率字典,在這個階段字典根據值進行排序。現在如何按降序對具有相同值的鍵進行排序?這是代碼的輸出和預期輸出:
Output:
{2: 5, 7: 5, 3: 4, 4: 4, 1: 3, 11: 3, 8: 3, 5: 1}
Expected Output:
{7: 5, 2: 5, 4: 4, 3: 4, 11: 3, 1: 3, 8: 3, 5: 1}
uj5u.com熱心網友回復:
您可以使用元組作為鍵。特別是以下形式的元組(value, key):
dict(sorted(freq.items(), key=lambda item: item[::-1], reverse=True))
uj5u.com熱心網友回復:
您可以反轉每個鍵值對并取每個的負值(無需設定reverse=True):
dict(sorted(freq.items(),key=lambda item:(-item[1],-item[0])))
如果您需要對鍵進行升序排序,對值進行降序排序(反之亦然),這種方法可以讓您更加靈活。您只需要更改 lambda 函式中的符號。
uj5u.com熱心網友回復:
對于你的字典,你可以簡單地排序 key=lambda x: (x[1], x[0])
對于您的代碼,您還可以使用來自collection模塊的 Counter ,如下所示:
freq = Counter(a)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375721.html
