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

如何对合并后的Python列表按两个字段排序?解决索引越界问题

问题分析与解决

错误原因

你通过zip(a,b)生成的列表c,每个元素是长度为2的元组,结构为(a中的子列表, b中的字符串),比如(['2022', 4], 'Random1')。元组的索引只有0和1,你写的i[2]超出了索引范围,因此触发IndexError: tuple index out of range。

修正方案

如果你的需求是先按a子列表里的第二个元素(即数字4、5)排序,再按b中的字符串排序,可以用以下两种方式实现:

方式1:原地修改原列表

list.sort()是原地排序方法,执行后会直接修改原列表c,且返回值为None,不需要赋值给变量:

c.sort(key=lambda i: (i[0][1], i[1]))

方式2:生成新的排序后列表

如果需要保留原列表c,使用sorted()函数生成新的排序后列表:

c_sorted = sorted(c, key=lambda i: (i[0][1], i[1]))

验证示例

假设调整b的顺序为b=["Random2","Random1"],执行修正后的代码后,c_sorted的输出为:

[(['2022', 4], 'Random1'), (['2023', 5], 'Random2')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:02:05