You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何按积分、胜场、队名多条件排序字典列表?

Python实现字典列表的多条件排序(世界杯小组赛场景)

要实现多条件排序,核心是给sorted()函数的key参数返回一个排序优先级元组,元组内元素的顺序就是排序的优先级(从高到低)。结合你的需求,具体实现如下:

1. 修正原始数据的语法错误

你提供的示例代码存在字符串引号未闭合的问题,先修正为合法的Python代码:

teams = [
    {'name': 'first_team', 'wins': 3, 'loses': 0, 'points': 9},
    {'name': 'second_team', 'wins': 2, 'loses': 1, 'points': 6},
    {'name': 'third_team', 'wins': 1, 'loses': 2, 'points': 3},
    {'name': 'fourth_team', 'wins': 0, 'loses': 3, 'points': 0}
]

2. 多条件排序实现

按照「积分降序 → 胜场降序 → 队名字典序升序」的规则排序,代码如下:

sorted_teams = sorted(teams, key=lambda d: (-d['points'], -d['wins'], d['name']))

逻辑说明

  • 积分/胜场降序:sorted()默认是升序排列,对数值取负后,大的数值会排在前面(比如9的负是-9,比6的负-6小,升序时-9在前,对应原始积分9在前)
  • 队名字典序升序:直接使用d['name'],默认按字符串的字典序(A-Z)排列,确保胜场和积分相同时,队名靠前的排前面

验证示例

如果添加一支积分、胜场与second_team相同的球队:

teams.append({'name': 'alpha_team', 'wins': 2, 'loses': 1, 'points': 6})

执行排序后,alpha_team会排在second_team之前,符合队名字典序的规则。

内容的提问来源于stack exchange,提问作者Sepas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:41:35