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

如何依据元素内的num2值对Python组合列表进行排序?

问题:基于动态变化的num2对组合列表排序

已知letter、num、num2三个列表的值会动态变化,需要基于num2的降序对组合后的输出列表进行排序。现有代码如下:

letter = ['A','B','C','D','E']
num = [7,6,1,1,1]
num2 = [24000,20900,5250,4500,5000]
output = []

for i in range(len(letter)):
    output.append((letter[i], num[i], num2[i]))

当前运行输出:

[('A', 7, 24000), ('B', 6, 20900), ('C', 1, 5250), ('D', 1, 4500), ('E', 1, 5000)]

期望得到的输出:

[('A', 7, 24000), ('B', 6, 20900), ('C', 1, 5250), ('E', 1, 5000), ('D', 1, 4500)]

解决方案

方法一:生成列表后排序

在原有代码基础上,添加排序逻辑,使用sorted()函数指定排序依据为元组的第三个元素(即num2对应的值),并设置降序:

letter = ['A','B','C','D','E']
num = [7,6,1,1,1]
num2 = [24000,20900,5250,4500,5000]
output = []

for i in range(len(letter)):
    output.append((letter[i], num[i], num2[i]))

# 按num2降序排序
output = sorted(output, key=lambda x: x[2], reverse=True)
print(output)

方法二:组合时直接排序(更简洁)

利用zip()函数直接组合三个列表,再进行排序,省去手动循环的步骤:

letter = ['A','B','C','D','E']
num = [7,6,1,1,1]
num2 = [24000,20900,5250,4500,5000]

# 直接组合三个列表并按num2降序排序
output = sorted(zip(letter, num, num2), key=lambda x: x[2], reverse=True)
print(output)

两种方法都能实现需求,且无论num2的值如何动态变化,排序逻辑都会自动基于最新的num2值执行,输出符合预期的排序结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:05:22