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

如何按字典中元组的第2个元素对Python列表排序?

解决Python列表排序时的KeyError: 1问题

嘿,这个错误的原因其实很好找——你在sort里写的lambda tup: tup[1]搞错了处理对象!

你要排序的data是一个字典列表,sort遍历的时候,每个传入lambda的参数是列表里的单个字典,而不是info对应的元组。你直接写tup[1],相当于在字典里找键为1的元素,这显然不存在,所以才会抛出KeyError: 1。

正确的写法

你需要先通过键'info'取出字典里的元组,再取元组的第2个元素(索引为1),修改后的代码如下:

data = [{'info': ('orange', 400000, 'apple'), 'photo': None}, {'info': ('grape', 485000, 'watermelon'), 'photo': None}]
data.sort(key=lambda item: item['info'][1])

验证效果

执行这段代码后,data会按照元组的第二个元素从小到大排序,结果如下:

[
    {'info': ('orange', 400000, 'apple'), 'photo': None},
    {'info': ('grape', 485000, 'watermelon'), 'photo': None}
]

如果需要降序排序,只需要加上reverse=True参数即可:

data.sort(key=lambda item: item['info'][1], reverse=True)

简单来说,就是先定位到字典里的info元组,再取排序依据的元素,这样就不会再触发KeyError啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:43:50