如何按多优先级条件排序嵌套字典:积分降序、胜场次之、队名升序
嵌套字典多优先级排序实现
我们需要对球队数据的嵌套字典按指定优先级完成排序,规则如下:
- 优先按照
points(积分)字段降序排列 - 若多支队伍积分相同,按照
wins(胜场)字段降序排列 - 若积分、胜场均相同,按照队伍名称的字母顺序升序排列
输入示例
team_data = { 'England': {'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4}, 'Spain': {'wins': 1, 'loses': 0, 'draws': 2, 'goal difference': 2, 'points': 5}, 'Belgium': {'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4}, 'Argentina': {'wins': 1, 'loses': 2, 'draws': 0, 'goal difference': -2, 'points': 3} }
实现代码
Python可直接利用sorted函数的自定义key特性实现多优先级排序,代码如下:
# 按优先级构造排序key:负积分(实现降序)、负胜场(实现降序)、队名(实现升序) sorted_teams = sorted(team_data.items(), key=lambda x: (-x[1]['points'], -x[1]['wins'], x[0])) # 按要求格式打印输出 for team, info in sorted_teams: print(f"{team} wins:{info['wins']} , loses:{info['loses']} , draws:{info['draws']} , goal difference:{info['goal difference']} , points:{info['points']}\n")
输出结果
Spain wins:1 , loses:0 , draws:2 , goal difference:2 , points:5 Belgium wins:1 , loses:1 , draws:1 , goal difference:0 , points:4 England wins:1 , loses:1 , draws:1 , goal difference:0 , points:4 Argentina wins:1 , loses:2 , draws:0 , goal difference:-2 , points:3
内容的提问来源于stack exchange,提问作者M_92
相关产品推荐
相关产品推荐

