Python3:自定义排序

问题描述 投票:0回答:1

我有字典,我想将频率从最高到最低排序。如果两个单词的频率相同,则字母顺序较低的单词排在最前面。

我想使用cmp函数,但显然此函数在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']

我想要的输出是['i, 'like', 'coding', 'so' ]

python python-3.x
1个回答
0
投票

您可以在排序键的第一个元素上放置-符号以颠倒顺序:

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']
© www.soinside.com 2019 - 2024. All rights reserved.