如何理解python中的cmp_to_key()函数

在functools包里的函数,将老式的比较函数( cmp function)转化为关键字函数( key function)。

与接受key function的工具一同使用(如 sorted(), min(), max(), heapq.nlargest(), itertools.groupby())。该函数主要用来将程序转成 Python 3 格式的,因为 Python 3 中不支持比较cmp()。

sorted(iterable,key = functools.cmp_to_key(locale.strcoll))

cmp()与key()的不同

cmp(x,y)是可调用的,接受两个参数,比较这两个参数并根据他们的大小关系返回负值、零或正值中的某一个。

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

更具体些,-1在排序中代表不改变x,y位置,1代表变成y,x位置。

nums = ["1","10","2","3"]
sorted(nums,cmp(lambda x,y:int(x+y)-int(y+x)))

这个方法比较老了

Original: https://www.cnblogs.com/cs-markdown10086/p/15834961.html
Author: NEU_ShuaiCheng
Title: 如何理解python中的cmp_to_key()函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714963/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 020 Linux 20个宝藏命令案例

    1 JDK 相关的查找命令 (1)确认是否安装 JDK (2)查找 java 命令目录的位置 (3)查找 java 命令的位置的软链地址 (4)通过软链地址查找 JDK 的安装目录…

    技术杂谈 2023年7月10日
    066
  • 阿里DDD项目最佳实践-COLA 架构总览

    DDD分层架构、六边形架构、洋葱圈架构、以及 COLA 架构的核心职责就是要做核心业务逻辑和技术细节的分离和解耦。 在架构思想上,COLA 主张像六边形架构那样,使用端口-适配器去…

    技术杂谈 2023年6月1日
    0105
  • 高仿花生壳客户端程序(qt)

    高仿花生壳客户端程序 前言 设计的初想是在现场调试的时候,使用花生壳进行远程时,感觉类似花生壳这种程序的模板较为普遍,当时和同事打趣说一个星期内可以做出一摸一样的界面,回到公司正好…

    技术杂谈 2023年7月23日
    077
  • 如何支持组件的子元素任意摆放

    一个筛选组件如下图: 筛选组件包含一个 button 和一个 form, button 能控制 form 的显示与隐藏。设计里 button 和 form 在一行,实现时理所当然地…

    技术杂谈 2023年7月11日
    073
  • fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_jsonjson_value.asm”: No such file or directory

    修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++—输出文件---汇编程序输出:无列表 Original: https://w…

    技术杂谈 2023年5月30日
    073
  • 【最新版】30分钟教你搭建属于自己的个人博客

    【最新版】30分钟教你搭建属于自己的个人博客 简介: 本教程是以Hexo和Coding pages 为基础,搭建个人的静态博客网站 Hexo Hexo官网 快速、简洁且高效的博客框…

    技术杂谈 2023年6月21日
    096
  • 综合案例_创建数据库

    技术选型: web层: Servlet:前端控制器 html:视图 Filter:过滤器 BeanUtils:数据封装 jackson:json序列化工具 Service层 Jav…

    技术杂谈 2023年6月22日
    084
  • 音频和视频同步工具:Red Giant PluralEyes for Mac

    Original: https://www.cnblogs.com/aurora-123/p/16874370.htmlAuthor: 佛系女孩Title: 音频和视频同步工具:R…

    技术杂谈 2023年7月11日
    0101
  • 深入理解独占锁ReentrantLock类锁

    ReentrantLock介绍 【1】ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种…

    技术杂谈 2023年7月23日
    067
  • codepage IMLangCodePages

    http://baike.baidu.com/link?url=78DSTGAri8dvHNLQ03rThSKieJqhFwFWL4sQMao6cfaRSOUWN88QVBwmSJ…

    技术杂谈 2023年5月31日
    095
  • Mybatis动态数据源

    业务场景 现有股票与基金业务,不同的业务分在不同的库中,但有些业务类似可以基于同一套代码,例如组织架构、权限控制与客户管理,但是为区分业务线,要将数据拆分在不同的数据库中 达成效果…

    技术杂谈 2023年7月24日
    089
  • Chrome浏览器对标签进行整理和分组

    首先要升级到比较新的chrome版本,比如要81版本以上才可以 在打开页面的title上右击,弹出选项”Add Tab to Group”添加标签到分组,选…

    技术杂谈 2023年5月31日
    0131
  • 双绞线

    双绞线简介 双绞线(twisted pair,TP)是一种综合布线工程中最常用的传输介质,双绞线一般由两根22~26号绝缘铜导线相互缠绕而成,在一个电缆套管里的,不同线对具有不同的…

    技术杂谈 2023年7月11日
    069
  • 2022.32 物联网分层架构

    物联网技术的应用一般可划分为四层,分别感知层、网络层、平台层、应用层: 1、感知层 感知层通过传感技术,感知并采集物理世界的数据,建立人与物之间的沟通桥梁,主要由各种传感器以及传感…

    技术杂谈 2023年5月30日
    087
  • Xcode添加库文件framework (转)

    首先需要了解一下iOS中静态库和动态库、framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别…

    技术杂谈 2023年5月31日
    0110
  • Gin框架源码解析【建议收藏】

    Gin框架是golang的一个常用的web框架,最近一个项目中需要使用到它,所以对这个框架进行了学习。gin包非常短小精悍,不过主要包含的路由,中间件,日志都有了。我们可以追着代码…

    技术杂谈 2023年5月30日
    073
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球