首页 > 解决方案 > Python3:自定义排序

问题描述

我有字典,我想从最高到最低对频率进行排序。如果两个词的频率相同,那么字母顺序较低的词先出现。

我想使用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' ]

标签: pythonpython-3.x

解决方案


您可以将-符号放在排序键中的第一个元素以反转顺序:

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']

推荐阅读