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

python:如何在两个不同的键上排序复杂的列表

殳飞扬
2023-03-14
问题内容

我有一个奇怪的清单,以下列方式建立:

[[name_d, 5], [name_e, 10], [name_a, 5]]

我想先按数字(desc)排序,然后如果数字相同,则按名称(asc)排序。所以我想要的结果是:

[[name_e, 10], [name_a, 5], [name_d, 5]]

我试图考虑可以在sort方法中使用的lambda函数,但是我不确定是否可以这样做。


问题答案:

python中的sort函数允许将函数作为sort键传递:

l = [[name_d, 5], [name_e, 10], [name_a, 5]]
# copy
l_sorted = sorted(l, key=lambda x: (x[1] * -1, x[0]))
# in place
l.sort(key=lambda x: (x[1] * -1, x[0]))

编辑:
1.排序顺序
2.演示复制和就地排序



 类似资料:
  • 问题内容: Python的复杂性是什么?Python是否检查给定的iterable是否已排序,还是我必须自己做?我在文档中的任何地方都找不到它。 问题答案: 这 完全 取决于实现。python保证的是内置排序算法是 稳定的 (比较相等的元素保留其相对顺序)。如果要实现,甚至可以使用稳定的冒泡排序。 Cpython使用TimSort(插入排序的合并排序合并),如果输入已经排序,我相信它具有O(N)的

  • 我有一个算法包含以下情况;我想知道是否有可能有所改进(我认为不可能,但我可能错了)。 我有一个对象列表。我有两个不同的(独立的)键来对它们进行排序:和。实际上,我可以在算法开始时以两种方式对列表进行排序,而无需花费大量成本;因此,我有两份清单: (Python语法,但我认为任何人都能理解)。在这个阶段,只要复杂性保持在O(nlogn)以下,我完全可以做更多的事情(初始化新变量)。 我需要提取的许多

  • 在这里完成python noob,但我正在慢慢地将我的头缠绕在它周围。我正在制作一个1v1光环3锦标赛风格的程序,随机匹配玩家并选择地图、游戏类型等。。。 我遇到的问题是,我不知道如何从列表中随机调用两个不同的字符串。 假设这是球员名单,我将如何打印: 玩家1 vs玩家3 我尝试了一些不同的方法,但都没有用。我确实对随机代码库有一点了解,但我不知道如何做到这一点 随机打印。选择(玩家列表)“vs”

  • 两个反向数组合并成一个排序数组的时间复杂度是多少? 是O(n)还是O(log n)?

  • 问题内容: 我有两个列表,例如: 如何创建这些列表的所有排列,如下所示: 我可以用吗? 问题答案: