共同点

都有三个参数,

cmp用户自定义(指定函数),每个元素都会调用,效率没key高

key带一个参数的函数,用来为每个元素提取比较值

reverse=True    翻转

sort

sort作用的对象一般是列表

sort直接排序后就改变了自己,不用生成新的对象,所以效率更高

>>> m=[1,2,3,4,5]

>>> m.sort(reverse=True

>>> m

[5, 4, 3, 2, 1]

>>> m

['This', 'is', 'a', 'test', 'string', 'from', 'Andrew']

>>> m.sort()

>>> m

['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']

>>> m.sort(key=str.lower)

>>> m

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

sorted

python的内置函数

能够接受一切可迭代的对象

排序后不会改变自身,会新建一个对象,因此效率较低,但功能强大

对字典的排序(只是key)

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})

[1, 2, 3, 4, 5]

>>> sorted("This is a test string from Andrew".split(), key=str.lower)

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']                        #和上面的sort也可以

key参数需要指定一个函数,这个函数一个需要一个参数,且返回一个可用来比较的权值

这个函数仅仅会调用一次,比cmp参数指定的函数效率要高

我们可以使用operator中itemgetter, attrgetter, methodcaller来快速定义key函数,

>>> from operator import itemgetter, attrgetter, methodcaller

>>> sorted(student_tuples, key=itemgetter(1,2))            #允许多级比较

[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]            #和上面的sort也可以

>>> test            #字典同样也可以多级比较,只不过是指定key

[{'grade': 'A', 'score': 15, 'name': 'john'}, {'grade': 'B', 'score': 10, 'name': 'dave'}, {'grade': 'B', 'score': 12, 'name': 'jane'}]

>>> sorted(test, key=itemgetter('score','grade') )

[{'grade': 'B', 'score': 10, 'name': 'dave'}, {'grade': 'B', 'score': 12, 'name': 'jane'}, {'grade': 'A', 'score': 15, 'name': 'john'}]

使用attrgetter,可以对 对象的属性进行排序等

sorted(student_objects, key=attrgetter('grade', 'age'))

[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

对字典排序:

>>> test                #按分数排再按等级排

{'sun': ['E', 3], 'zhao': ['A', 90], 'wang': ['A', 88], 'li': ['B', 75]}

>>> sorted(test.iteritems(), key=lambda x: (x[1][1],x[1][0]))

[('sun', ['E', 3]), ('li', ['B', 75]), ('wang', ['A', 88]), ('zhao', ['A', 90])]

python中的sort和sorted的更多相关文章

  1. Python中的 sort 和 sorted

    今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...

  2. python中的sort、sorted、reverse、reversed详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  3. python中list.sort()与sorted()的区别

    list.sort()和sorted()都是python的内置函数,他们都用来对序列进行排序,区别在于 list.sort()是对列表就地(in-place)排序,返回None:sorted()返回排 ...

  4. python中的sort、sorted排序

    我们通常会遇到对数据库中的数据进行排序的问题,今天学习一下对列表和字典的排序方法. 列表 第一种:内建方法sort sort()对列表排序是永久性的排序. 用法:sort(*, key=None, r ...

  5. python中的sort方法

    Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...

  6. python中的sort方法使用详解

    Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...

  7. Python中的sort()

    Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可 ...

  8. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析

    一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...

  9. python中的sort方法和sorted方法

    一.sort()函数 描述 sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数. 语法 sort()方法语法: 1 list.sort(cmp=None, key=No ...

随机推荐

  1. 将线上服务器生成的日志信息实时导入kafka,采用agent和collector分层传输,app的数据通过thrift传给agent,agent通过avro sink将数据发给collector,collector将数据汇集后,发送给kafka

    记flume部署过程中遇到的问题以及解决方法(持续更新) - CSDN博客 https://blog.csdn.net/lijinqi1987/article/details/77449889 现将调 ...

  2. Cluster Mode Overview

    https://spark.apache.org/docs/latest/cluster-overview.html

  3. 根据查询出各地订单商品数量 group by

    order订单表,orderprduct订单商品表,area地区表 SELECT (a1.Name+a2.Name+a3.Name) AS areanaem,orderArea.AreaId,orde ...

  4. MySQL 权限生效

    用GRANT.REVOKE或SET PASSWORD对授权表施行的修改会立即被服务器注意到. 如果你手工地修改授权表(使用INSERT.UPDATE等等),你应该执行一个FLUSH PRIVILEGE ...

  5. 进程调度函数schedule()分析

    1.功能简述: 最主要作用就是 从就绪进程中选择一个优先级最高的进程来代替当前进程运行.   2.代码分析 schedule();      struct task_struct *tsk = cur ...

  6. physical processor, core, logical processor

    Processor Groups https://docs.microsoft.com/en-us/windows/desktop/ProcThread/processor-groups The 64 ...

  7. 修改DEDE系统数据库表前缀

    1,修改之前我们先备份下数据(哥们儿之前没有备份,我艹,害苦了),备份的操作过程是:网站后台------系统------数据库备份/还原-------然后按提交.默认保存的数据在data/backup ...

  8. DGA聚类 使用DBScan

    features = sc.parallelize(data_group[idx]).map(lambda x: (x.host_ip+'^'+x.domain, 1)).reduceByKey(op ...

  9. cassandra解析-log写

    db/Keyspace.java 中的 apply 函数 中的 commitLogPosition = CommitLog.instance.add(mutation); 这一句确认是写log的代码. ...

  10. HihoCoder1084: 扩展KMP(二分+hash,求T串中S串的数量,可以失配一定次数)

    时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 你知道KMP吗?它是用于判断一个字符串是否是另一个字符串的子串的算法.今天我们想去扩展它. 在信息理论中,在两个相同长度的字 ...