如何根据不同的索引对 python 列表进行排序?
python 673
原文标题 :How to sort a python list, based on different indices?
例如,我们有一个列表列表。该列表应根据某个索引 i 进行反向排序,如果有平局,则应根据条件按升序或降序对其进行排序。
例如:
名单是[['A', 2, 4.2], ['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5]]
如何对此进行排序以使结果为:
- [[‘B’, 4, 4.5], [‘A’, 2, 4.2], [‘D’, 2, 3.5], [‘C’, 2, 3.3]]
- [[‘B’, 4, 4.5], [‘C’, 2, 3.3], [‘D’, 2, 3.5], [‘A’, 2, 4.2]]
在第一个条件下,我希望它们根据index 1
按降序排序,然后在index 2
上再次按降序排序,如果有并列index 1
。
在第二种情况下,我希望它们根据index 1
按降序排序,然后在index 2
上按升序排序,如果有并列index 1
。
回复
我来回复-
Amirhossein Kiani 评论
该回答已被采纳!
我能想到的是以下内容:
myList = [['A', 2, 4.2], ['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5]] print(sorted(myList, key= lambda x: (x[1], x[2]), reverse=True)) print(sorted(myList, key= lambda x: (x[1], -1*x[2]), reverse=True))
输出
[['B', 4, 4.5], ['A', 2, 4.2], ['D', 2, 3.5], ['C', 2, 3.3]] [['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5], ['A', 2, 4.2]]
解释
sorted
function 有两个参数:一个iterable,它可以是一个列表、集合或任何可迭代的东西,以及一个定义排序模式的key。在关键参数中,我定义了一个表示排序顺序的元组((x[1], x[2])
),如果索引为 1 的元素是并列的,那么它会检查索引号 2。第二个排序函数是相同的,但是当它去对于索引号为 2 的元素,它会检查其负值以按升序对它们进行排序。2年前