如何根据不同的索引对 python 列表进行排序?

xiaoxingxing 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

原文链接:https://stackoverflow.com//questions/71463773/how-to-sort-a-python-list-based-on-different-indices

回复

我来回复
  • Amirhossein Kiani的头像
    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]]
    

    解释

    sortedfunction 有两个参数:一个iterable,它可以是一个列表、集合或任何可迭代的东西,以及一个定义排序模式的key。在关键参数中,我定义了一个表示排序顺序的元组((x[1], x[2])),如果索引为 1 的元素是并列的,那么它会检查索引号 2。第二个排序函数是相同的,但是当它去对于索引号为 2 的元素,它会检查其负值以按升序对它们进行排序。

    2年前 0条评论