[英]Python3: Custom Sort
我有字典,我想從最高到最低對頻率進行排序。 如果兩個詞的頻率相同,則字母順序較低的詞排在第一位。
我想使用cmp function 但顯然這個 function 在 python 3 中被棄用了。
這就是我所做的:
dic = {'i': 2, 'like': 2, 'so': 1, 'coding': 1}
output = [key for key, value in sorted(
dic.items(), key=itemgetter(1, 0), reverse=True)]
print(output) // ['like', 'i', 'so', 'coding']
我想要的 output 是['i, 'like', 'coding', 'so' ]
您可以將-
標記到排序鍵中的第一個元素以反轉順序:
dic = {'i': 2, 'like': 2, 'so': 1, 'coding': 1}
print([k for k, _ in sorted(dic.items(), key=lambda k: (-k[1], k[0]))])
印刷:
['i', 'like', 'coding', 'so']
您可以在排序中使用關鍵參數。 它將按由x[1]
表示的值排序,否則選擇由-len(x[0])
表示的最小大小
output = [key for key,_ in sorted(dic.items(),key=lambda x: (x[1],-len(x[0])),reverse=True)]
Output:
['i', 'like', 'so', 'coding']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.