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

Python自定义排序函数按指定字段排序出现IndexError异常问题

报错原因
  • sorted的key参数对应的函数,接收的是待排序列表的单个元素作为入参,而非整个待排序列表。你写的order函数错误地将入参的单个字符串(列表A的元素本质是逗号分隔的字符串)做了遍历,相当于遍历字符串的每一个字符,将单个字符执行split(',')后得到的列表长度恒为1,访问m[1]自然会触发索引越界。
  • 之前使用m[0]未报错是因为单个字符split后取第一个元素逻辑合法,但此时排序依据是每个字符串的首字符字典序,所以才会得到[5,3,10,12,15]这种不符合数字顺序的结果,本质排序逻辑也是错误的。
正确实现方案

你的需求是按每个元素中第三个字段(对应A/B/C/D/E的字段,split后索引为2)的顺序排序,直接在key函数中取出该字段作为排序依据即可:

A =['12,Boring Stuff with Python Programming,D,692617,4.6,70508',
'10,Complete C# 2D,A,364934,4.6,78989',
'5,Java Developers,B,502572,4.6,123798',
'15,Learn Python Programming Masterclass,C,240790,4.5,58677',
'3,Machine Learning A-Z,E,692812,4.5,132228',]

# key函数直接处理单个元素,取对应A/B/C/D/E的字段即可
sorted_A = sorted(A, key=lambda x: x.split(',')[2])
print(sorted_A)

运行后输出结果就是按A→B→C→D→E顺序排列的列表:

['10,Complete C# 2D,A,364934,4.6,78989', '5,Java Developers,B,502572,4.6,123798', '15,Learn Python Programming Masterclass,C,240790,4.5,58677', '12,Boring Stuff with Python Programming,D,692617,4.6,70508', '3,Machine Learning A-Z,E,692812,4.5,132228']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:02