一尘不染

用两个键对Python列表进行排序,但只有一个键相反

python

我想知道用Python方式通过两个键对元组列表进行排序的方式,从而用一个(只有一个)键进行排序将是相反的顺序,而用另一个键进行排序将是不区分大小写的。更具体地说,我有一个包含元组的列表,例如:

myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]

我可以使用以下代码对它们进行两个键排序:

sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))

要以相反的顺序排序,我可以使用

sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]), reverse = True)

但这会用两个键以相反的顺序排序。

任何提示,不胜感激。


阅读 185

收藏
2020-12-20

共1个答案

一尘不染

当我们需要对具有两个约束的列表进行排序时,将使用两个键,一个约束以升序排序,另一个约束以降序排序在同一列表中或任意列表中。
在您的示例
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))中,只能以一种顺序对整个列表进行排序,
您可以尝试这些并检查发生了什么

sortedList = sorted(myList, key = lambda y: (y[0].lower(), -y[1]))
sortedList = sorted(myList, key = lambda y: (-y[0].lower(), y[1]))
sortedList = sorted(myList, key = lambda y: (-y[0].lower(), -y[1]))

希望你以后能理解;)

2020-12-20