簡體   English   中英

Python3:自定義排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM