为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2022-11-01 15:10:47
我有一个像这样的二维列表:[     [abc, 5],     [abd, 21],     [abb, 10],     [abc, 3],     [abb, 15],     [abd, 20]     ]首先:我需要按字典顺序对列表进行排序(这很简单)第二:如果第一列有多个相同的元素,则按照第二列(降序)对列表(只有相同的元素)进行排序。所以,我想要这样的结果:[     [abb, 15],     [abb, 10],     [abc, 5],     [abc, 3],     [abd, 21],     [abd, 20]     ]
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

Python 的排序函数是稳定的,这意味着如果两个元素比较相等,它们的相对位置不会改变。元素只有在比较不相等时才会切换位置。


此外,排序需要一个可选key参数,该参数是一个确定排序应该比较哪些值的函数。您可以为此定义一个完整的函数,但如果您只打算使用一次,则通常定义一个简短的 lambda 函数。


将它们放在一起,您可以先按列表的第二个元素对列表进行排序,然后再按第一个元素对它们进行第二次排序。第一次排序的相对位置将在第二次排序之后保持。


a = [

    ['abc', 5],

    ['abd', 21],

    ['abb', 10],

    ['abc', 3],

    ['abb', 15],

    ['abd', 20]

]


# Sort by second element first, in descending order

a = sorted(a, key=lambda x: x[1], reverse=True)  


# Then sort by first element, in ascending order

a = sorted(a, key=lambda x: x[0])  


print(a)  # [['abb', 15], ['abb', 10], ['abc', 5], ['abc', 3], ['abd', 21], ['abd', 20]]



查看完整回答
反对 回复 2022-11-01
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

查看完整回答
反对 回复 2022-11-01
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号