python - 按值对具有不同键的字典列表进行排序
问题描述
我有一个只有一个键和一个值的字典列表。键总是不同的,值是浮点数。如何按价值对其进行排序?
example_list = [{'c47-d75 d75-e6b e6b-ff1 ff1-6d6 6d6-e63 e63-80c': 292.1799470129255}, {'805-7fd': 185.56518334219}, {'805-dd3 dd3-088 088-dd3 dd3-80c': 368.5010685728143}, {'805-6b5': 145.897977770909}, {'77e-805 805-7fd': 326.693786870932}, {'323-83d': 131.71963170528})
结果应按值排序,因此第一项应为
{'805-dd3 dd3-088 088-dd3 dd3-80c': 368.5010685728143}
能否请你帮忙?
解决方案
要根据字典的第一个值对列表进行排序,请传递一个函数sorted()
来提取字典的第一个值。
d.values()
返回字典值的可迭代iter()
生成字典值的迭代器- 由于只有一个字典值(假设),调用
next()
迭代器返回第一个(也是唯一的)值。
要按最大值到最小值排序,请将reverse=True
关键字参数传递给sorted()
.
def first_value(d):
return next(iter(d.values()))
example_list = [{'c47-d75 d75-e6b e6b-ff1 ff1-6d6 6d6-e63 e63-80c': 292.1799470129255}, {'805-7fd': 185.56518334219}, {'805-dd3 dd3-088 088-dd3 dd3-80c': 368.5010685728143}, {'805-6b5': 145.897977770909}, {'77e-805 805-7fd': 326.693786870932}, {'323-83d': 131.71963170528}]
sorted_list = sorted(example_list, key=first_value, reverse=True)
print(sorted_list[0])
推荐阅读
- java - 获取 Junit 类别
- javascript - ReferenceError: vis 未定义
- postgresql - Postgres db design 规范化表或使用数组列
- python - pygame渲染问题
- node.js - 从 Discord API 请求令牌时出现 400 错误
- java - Google OAuth2.0 + Lambda + S3 授权 - 如何从 S3 引用文件?
- javascript - 如何使用 Selenium 从以 JS 作为 href 链接的 ASP.NET 网页获取函数的值?
- c++ - 如何正确旋转光栅 32 位?
- postsharp - 摆脱 OnMethodBoundaryAspect 和 ILocationValidationAspect 之间的方面冲突警告?
- java - JPA Hibernate 注释问题