Python 按多个条件排序
- 2025-03-20 08:47:00
- admin 原创
- 39
问题描述:
我有一个列表,其中每个元素的形式为[list of integers, integer]
。例如,列表的元素可能看起来像这样[[1,3,1,2], -1]
。
我想根据以下标准对包含所述元素类型的列表进行排序:
如果两个元素的整数列表(即
element[0]
)的长度不同,则整数列表较小的元素是较小的元素。否则,如果整数列表的长度相同,则较小的元素是两个元素的整数列表中第一个整数不同的元素。例如:
[[1,1,99,100], -1] < [[1,1,100,1], -1], 因为 99 < 100。
否则,如果整数列表相同,则较小的元素是中具有较小整数的元素
element[1]
。
我该如何编写一个适当的键函数来传递给 sorted() 或 sort()?
解决方案 1:
在您的关键中列出三个标准:
sorted(inputlist, key=lambda e: (len(e[0]), e[0], e[1]))
现在,您首先按长度对每个元素进行排序,然后直接比较第一个元素(仅当第一个元素长度相等时使用),然后按最后一个整数的值进行排序。
Python 按字典顺序对元组和列表进行排序;比较第一个元素,并且仅当其没有差异时,才比较第二个元素,等等。
此处的第二个元素是,e[0]
只有当两个比较条目都具有相等长度的嵌套列表时才会使用。它们再次按字典顺序进行比较,因此将元素配对,直到一对元素不同。
解决方案 2:
key = lambda x: (len(x[0]), x[0], x[1])
这种方法之所以有效,是因为元组(和列表)是通过依次查看每个元素直到发现差异来进行比较的。因此,当您想按偏好顺序对多个条件进行排序时,只需将每个条件以相同的顺序粘贴到元组的元素中即可。
我假设“较小”与“较小”的意思相同,也就是说,您并不是要比较绝对值。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD