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

Python 3.6.5中二维列表按总分排序的实现方法

Python二维列表按分数总分排序解决方案

嘿,我来帮你搞定这个问题!首先你写的sort方法调用有点小问题——list.sort()是列表的内置方法,不需要把列表本身作为第一个参数传进去,它会直接在原列表上进行修改。

然后关于key参数的部分,你只需要计算每个子列表里除第一个元素(名称)之外所有分数的总和就行啦。具体来说,用sum(x[1:])就可以实现:x[1:]会截取子列表从索引1开始的所有元素(也就是所有分数),sum()函数把这些分数加起来,这个总和就是我们排序的依据。

给你完整的正确代码:

a_list = [['name1', 5, 6, 3, 7], ['name3', 2, 6, 3, 6], ['name3', 2, 10, 8, 5]]
# 按分数总分从高到低排序,不修改原字段
a_list.sort(key=lambda x: sum(x[1:]), reverse=True)
print(a_list)

运行这段代码后,输出的结果会是:

[['name3', 2, 10, 8, 5], ['name1', 5, 6, 3, 7], ['name3', 2, 6, 3, 6]]

如果你不想修改原来的a_list,而是生成一个新的排序后的列表,可以用sorted()函数(它会返回新列表,原列表保持不变):

a_list = [['name1', 5, 6, 3, 7], ['name3', 2, 6, 3, 6], ['name3', 2, 10, 8, 5]]
sorted_list = sorted(a_list, key=lambda x: sum(x[1:]), reverse=True)
print(sorted_list)

两种方式都不会改动任何子列表里的名称或分数字段,只是调整了子列表的顺序,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:45:39