我有一个字典列表,如下所示,
x = [
{"matches_count": 10, distance: 50},
{"matches_count": 20, distance: 50},
{"matches_count": 1, "distance: 20},
{"matches_count": 2, "distance": 20},
{"matches_count": 5, "distance: 30},
]
我需要像下面这样排序
x = [
{"matches_count": 2, distance: 20},
{"matches_count": 1, "distance: 20},
{"matches_count": 5, "distance: 30},
{"matches_count": 20, distance: 50},
{"matches_count": 10, "distance": 50}
]
基本上,这应该同时使用距离和matches_count进行排序。当距离相同时,最高匹配计数应该排在第一位。有没有可能用sorted方法做到这一点?或者有没有其他方法可以执行此操作?
我已经检查了以下问题,但我无法从他们那里获得有关我的问题的正确见解。按具有不同顺序的多个键对字典列表进行排序
您可以使用该sorted
功能:
print(sorted(x, key=lambda a: (a['distance'], -a['matches_count'])))
输出:
[{'matches_count': 2, 'distance': 20}, {'matches_count': 1, 'distance': 20}, {'matches_count': 5, 'distance': 30}, {'matches_count': 20, 'distance': 50}, {'matches_count': 10, 'distance': 50}]
这首先distance
按键排序,如果相同,则按 的负数排序matches_count
。我把它设为负数,所以它按降序而不是升序排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句