python - 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' ]
解决方案
您可以将-
符号放在排序键中的第一个元素以反转顺序:
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']
推荐阅读
- node.js - 如何在nodejs中一周后发送电子邮件
- c# - 如何将锚标记链接到 c# 函数?
- xaml - 获取 Xamarin.Forms 上 TabbedPage 的本机 iOS 系统选项卡栏图标
- python - Python Discord 机器人 | 我如何使用用户输入?
- android - 如何以编程方式获取 android 上的所有热信息(CPU [所有内核]、GPU、设备等)?
- django - 将实例传递给 Django 模态表单
- c++ - std::unique_ptr operator[] 与原始 ptr 动态数组 operator[]
- aws-lambda - AWS Lambda Chalice 层分段错误
- javascript - 如何在 react-native 中查看变量的值?
- reactjs - 发送后端请求时反应不更新状态