如何根据元组中的另一个值(第三个值)按降序对元组的排序列表(基于第二个值)中的相似值进行排序

How to sort similar values in a sorted list (based on second value) of tuples based on another value(third value) in the tuple in descending order

我有一个格式为

的元组列表

[("d",21,5),(e,21,4),("a",20,1),("b",20,3),("c",20,2),...]

其中第一个值(a、b、c 等)是唯一的,元组中的其他两个值可能重复。(如 20)

我想根据元组中的第二个元素(此处为 20,21)按升序对列表进行排序,例如

[a,b,c,d,e]

然后我希望基于相同数字排序的值,例如 (a,b,c) 基于 20 和 (d,e) 基于 21 排序的值基于第三个值排序(此处为 1,2,元组的 3,4,5) 降序排列,如

[b,c,a,d,e]

如果您的原始列表如下所示:

L = [("d",21,5),(e,21,4),("a",20,1),("b",20,3),("c",20,2),...]

然后,您可以通过在排序函数中定义一个二元组键来按照您想要的方式对其进行排序:

L.sort(key=lambda t: (t[1],-t[2]))

这确保列表按元组中的第二个元素排序,而平局由元组中第三个元素的取反值打破(即按第三个元素降序排列)