具有多个参数的复杂排序?

2024-03-27

我有一个元组列表:

li = [('fink', 3), ('flip', 3), ('flock', 4), ('foo', 12), ('foot', 20), ('football', 20), ('futz', 10), ('flip', 3), ('flank', 3), ('flop', 3)]

如何首先按血统编号对列表进行排序,然后按字母顺序降序排序?结果将是:

('foot', 20)
('football', 20)
('foo', 12)
('futz', 10)
('flock', 4)
('fink', 3)
('flip', 3)
('flake', 3)
('flop', 3)

from operator import itemgetter

sorted_li = sorted(li, key=itemgetter(1,0), reverse=True)

虽然上面的代码正确地按降序排序,但单词并未按字母顺序排序。


这对一个人来说太复杂了itemgetter. Use lambda反而:

sorted_li = sorted(li, key=lambda x: (-x[1], x[0]))

它与使用两个连续排序的速度大致相同itemgetter,但代码更少,而且可能更具可读性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个参数的复杂排序? 的相关文章

随机推荐

  • 使用Delphi创建Win7跳转列表[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试使用 Delphi 在 Windows 7 上为我的应用程序创建跳转列表 我找到了这个 C 代码 但我不知道如何将其转换为
  • 循环迭代器命名约定[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们知道 不知何故 我们使用i and j循环中的变量非常常见 如果一个人需要双for循环 很可能会使用如下所示的内容 for int i 0
  • 单击

    看起来 active仅适用于background单击时的瞬间颜色
  • Ecto.Migrations.references/2 中的 on_delete 选项有什么作用?

    The 埃克托文档 https hexdocs pm ecto sql Ecto Migration html references 2描述了可用的选项references 2 但没有记录这些选项的作用 可用的选项有 nothing del
  • 如何在 JavaScript 中将公历日期更改为波斯日期?

    谁能帮我在 JavaScript 中将公历日期更改为波斯日期 我想在 HTML 和 JavaScript 中使用它 您可以使用toLocaleDateString let today new Date toLocaleDateString
  • DICOM 文件压缩

    我的工作需要使用 DICOM 文件 每个 DICOM 文件由单个目录中的许多 dcm 文件组成 我需要通过网络发送这些文件 由于文件很大 这个过程在某种程度上是这样的 我也是一名程序员 我想知道压缩此类文件的理想方法是什么 我说的是在本地计
  • Ruby - 如果 url 是重定向,如何下载文件?

    如果 url 是重定向 Ruby 如何下载文件 我正在尝试下载这个网址 soundcloud com stereo f cohete amigo download 重定向是这样的 ec media soundcloud com HNIGsu
  • 如何在 templatete js 之后包含组件 js

    我在 templatete index php 上添加了 javascript doc JFactory getDocument doc gt addScript this gt baseurl templates this gt temp
  • 获取终端中可用线路的数量

    如何找到终端中的可用线路数量 最好以跨平台的方式 但欢迎任何建议 甚至特定于操作系统 终端的高度和长度可以使用以下公式找到os https docs python org 3 library os html querying the siz
  • 暂停本地通知

    我正在开发一个警报应用程序 并为此使用本地通知 现在我想为我的闹钟添加贪睡功能 我在Google上搜索发现iPhone不支持此类功能 但还有其他方法可以做到这一点吗 据我所知 当通知窗口弹出时 您无法添加自定义行为 但 你可以这样尝试 用户
  • 我们如何创建一个更大的中心 UITabBar Item

    我想知道我们如何创建一个更大的中心 UITabBar 如下图所示 真的很漂亮 单击要突出显示的特定选项卡栏项目的视图控制器内的选项卡栏按钮 删除文本 只需将标签栏按钮的图像插入顶部设置为 25即可 就像下图一样 在那之后 goto asse
  • Vim 语法文件与 \zs 不匹配

    我试图通过更改 fsharp 语法文件中的这一行 来自this https github com fsharp vim fsharp插件 来自 syn match fsharpModule
  • 如何在Python中打印命令?

    我不从事编程领域 但最近对 Python 感兴趣 我正在编写一些函数 但为了调试 我需要查看正在运行哪些命令 例如 def foo for i in xrange 0 5 a 1 i 是否可以让解释器输出 gt gt gt for i in
  • 在 JQueryUI 选项卡选择上加载 ASP.NET MVC 部分视图

    我一直在寻找最后一天 找不到在过去一两年内提出的关于这个特定主题的任何内容 并且由于 JQuery 似乎相当多地弃用了一些东西 因此就当前的情况提出这个问题似乎是公平的jQuery API 对 JQuery 有点陌生 我想知道这一点 如果我
  • 具有动态宽度的居中固定 div (CSS)

    我有一个 div 具有以下 CSS some kind of popup position fixed top 100px min height 300px width 90 max width 900px 现在 我怎样才能让这个div居中
  • 高阶函数和柯里化函数之间的区别

    我在读一本书 使用 F 进行函数式编程 https rads stackoverflow com amzn click com 1107684064 which 第 33 页 在 部分高阶函数的声明 我们已经看到了高阶内置函数 例如 和 并
  • 跨多个工作表的 VBA 宏

    我正在尝试运行一个在多个工作表上执行功能的宏 假设我已经在工作表 4 上分配了宏按钮 我已经列出了我希望它逐步执行的功能 1 选择工作表 4 中的某些单元格并复制到工作表 4 中的相邻单元格 2 删除工作表 3 中的单元格区域 3 剪切工作
  • 根据语言重定向用户

    我有以下代码
  • 捕获右键单击 AS3

    是否可以在Flash AS3 中捕获右键单击 没有 JQuery JavaScript 当右键单击被捕获时 我需要暂停游戏 所以我不太想禁用上下文菜单 因为我只是想告诉发生了右键单击 我可以添加一个 EventListener 吗 还有其他
  • 具有多个参数的复杂排序?

    我有一个元组列表 li fink 3 flip 3 flock 4 foo 12 foot 20 football 20 futz 10 flip 3 flank 3 flop 3 如何首先按血统编号对列表进行排序 然后按字母顺序降序排序