当前位置: 首页 > 面试题库 >

Python按多个条件排序

越霖
2023-03-14
问题内容

我有一个列表,其中每个元素都是形式[list of integers, integer]。例如,列表的元素可能看起来像这样[[1,3,1,2], -1]

我想通过以下条件对包含描述的元素类型的列表进行排序:

  1. 如果两个元素的整数列表(即element[0])的长度不同,则整数列表较小的元素是较小的元素。

  2. 否则,如果整数列表的长度相同,则较小的元素是第一个整数的较小整数,这两个元素的整数列表都不同。例如:

[[1,1,99,100],-1] <[[1,1,100,1],-1],因为99 <100。

  1. 否则,如果整数列表相同,则较小的元素是中的较小整数的元素element[1]

如何编写可以传递给sorted()或sort()的适当键函数


问题答案:

列出密钥中的三个条件:

sorted(inputlist, key=lambda e: (len(e[0]), e[0], e[1]))

现在,您首先按长度对每个元素进行排序,然后直接比较第一个元素(仅当第一个元素的长度相等时才使用),然后按最后一个整数的值排序。

Python按照字典顺序对元组和列表进行排序;比较第一个元素,只有在没有区别的情况下,才比较第二个元素,依此类推。

这里的第二个元素e[0]仅在两个比较条目都具有相等长度的嵌套列表时才使用。再次按字典顺序对这些元素进行比较,因此将元素配对直到一对不同为止。



 类似资料:
  • 我有以下代码: 我的问题是我想让我的列表按多个东西排序: 1。)将它们分组为未来事件和过去事件(通过检查ystem.current毫秒()是否大于结束时间戳)2。)通过开始升序排序未来事件3。)通过结束降序排序过去事件 我可以用Java 8 Lambda来做这件事吗?或者我需要另一种排序项目的方法吗?

  • 我想写一个查询,它将根据多个条件对结果进行排序。 请参考下表 我想在表上方排序 1-通过已知域后跟然后Rest。 所以我想把结果行分成三部分。 第一部分的行具有作为域,然后在第二部分的行中,最后剩下的行具有域。 2-按字母顺序排列,所有特殊字符位于末尾。 每个部分都应该在字段上按字母顺序进一步排序,末尾有特殊字符。 结果应如下表所示。 我已经用下面的查询按字母顺序对结果进行排序,底部有特殊符号,但

  • 我想这样做: 我在想有没有更干净的方法来写这种东西。我期待一些东西像签名,它需要一个可比变量并选择第一个非零。

  • 问题内容: 我有一个小代码问题,它适用于IDLE而不适用于Eclipse,我可以这样写吗: 代替这个: 谢谢。 问题答案: 使用和顺序: 它针对一个元组进行测试,哪个Python将方便而有效地将其存储为一个常量。您还可以使用设置文字: 但只有Python的最新版本(Python 3.2 和更高版本)才会将此视为不变的常量。对于更新的代码,这是最快的选择。 因为这是一个字符,所以您甚至可以使用字符串

  • 问题内容: 我正在尝试做一个标准查询,该查询返回像常见问题一样的stackoverflow中回答最多的问题。 一个问题包含多个答案。 我试图以标准查询返回按每个问题的答案数排序的最常回答的问题。 有人知道我应该在hibernate标准util中使用什么吗? 问题答案: 这将返回一个Object []列表。每个Object []都将问题的ID作为第一个元素,并将此问题的答案数目作为第二个元素。问题按

  • 问题内容: 请帮助我创建一个包含10个’where’子句的select查询,其顺序应为:查询结果应按大多数关键字(where条件)匹配到最不匹配的顺序显示。 注意:所有10个条件都带有“或”。 请帮助我创建此查询。我正在使用MS-SQL Server 2005 喜欢: 在上面的查询中,所有与最大条件匹配的记录都应位于顶部,而较少匹配条件的记录应位于底部。 问题答案: