使用条件对python中的二维列表进行排序

我有一个像这样的二维列表:

[
    [abc, 5],
    [abd, 21],
    [abb, 10],
    [abc, 3],
    [abb, 15],
    [abd, 20]
    ]

首先:我需要按字典顺序对列表进行排序(这很简单)

第二:如果第一列有多个相同的元素,则按照第二列(降序)对列表(只有相同的元素)进行排序。

所以,我想要这样的结果:

[
    [abb, 15],
    [abb, 10],
    [abc, 5],
    [abc, 3],
    [abd, 21],
    [abd, 20]
    ]



婷婷同学_
浏览 207回答 2
2回答

回首忆惘然

Python 的排序函数是稳定的,这意味着如果两个元素比较相等,它们的相对位置不会改变。元素只有在比较不相等时才会切换位置。此外,排序需要一个可选key参数,该参数是一个确定排序应该比较哪些值的函数。您可以为此定义一个完整的函数,但如果您只打算使用一次,则通常定义一个简短的 lambda 函数。将它们放在一起,您可以先按列表的第二个元素对列表进行排序,然后再按第一个元素对它们进行第二次排序。第一次排序的相对位置将在第二次排序之后保持。a = [    ['abc', 5],    ['abd', 21],    ['abb', 10],    ['abc', 3],    ['abb', 15],    ['abd', 20]]# Sort by second element first, in descending ordera = sorted(a, key=lambda x: x[1], reverse=True)  # Then sort by first element, in ascending ordera = sorted(a, key=lambda x: x[0])  print(a)  # [['abb', 15], ['abb', 10], ['abc', 5], ['abc', 3], ['abd', 21], ['abd', 20]]

缥缈止盈

此处详细描述了该方法:https ://portingguide.readthedocs.io/en/latest/comparisons.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python