我们需要对List、Dict进行排序,Python提供了两个方法,对给定的List L进行排序.

  • 方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本
  • 方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变
--------------------------------sorted---------------------------------------
>>> help(sorted)
Help on built-in function sorted in module __builtin__:sorted(...)sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
---------------------------------sort----------------------------------------
>>> help(list.sort)
Help on method_descriptor:sort(...)L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;cmp(x, y) -> -1, 0, 1
-----------------------------------------------------------------------------
  • iterable:是可迭代类型;
  • cmp:用于比较的函数,比较什么由key决定;
  • key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
  • reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。
  • 返回值:是一个经过排序的可迭代类型,与iterable一样。

参数说明:

(1) cmp参数

cmp接受一个函数,拿整形举例,形式为:

def f(a,b):return a-b

如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了

(2) key参数

key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下

def f(a):return len(a)

key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序

(3) reverse参数

接受False 或者True 表示是否逆序

例子:
(1)按照元素长度排序

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f(x):return len(x)
sort(key=f)
print (L)#输出:
[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]

(2)按照每个字典元素里面key为1的元素的值排序

L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f2(a,b):return a[1]-b[1]
L.sort(cmp=f2)
print (L)

1.对由tuple组成的List排序

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

用key函数排序:返回由tuple组成的list

>>> sorted(students, key=lambda student : student[2])   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

用cmp函数排序

>>> sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

用 operator 函数来加快速度,

>>> from operator import itemgetter, attrgetter
>>> sorted(students, key=itemgetter(2))

用 operator 函数进行多级排序

>>> sorted(students, key=itemgetter(1,2))  # sort by grade then by age
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

2. 对字典排序 ,返回由tuple组成的List,不再是字典。

>>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4}
>>> sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]

Python基础太难学?小编创建了一个Python学习交流QQ群:531509025,群里有大量基础入门知识,都是从零开始的,群里还有专业的人给你解答问题。寻找有志同道合的小伙伴,互帮互助,群里还有不错PDF电子书

Python中sorted函数的用法相关推荐

  1. python中sorted函数的用法_Python3 中sorted() 函数的用法

    描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...

  2. python中sorted()函数的用法

    一. 定义 sorted()函数对所有可迭代的对象进行排序操作 二. 语法 sorted(iterable [, key[, reverse]]]) iterable:可迭代对象 key:主要是用来进 ...

  3. python中sorted()函数的用法_Python中的Sorted()函数

    在本教程中,我们将学习Python中的sorted()函数. 函数sorted()用于对可迭代对象进行升序或降序排序.我们甚至可以根据不同的键和值对字典列表进行排序.让我们充分利用sorted()函数 ...

  4. python中sorted函数的用法_Python中map,reduce,filter和sorted函数的使用方法

    map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x): ...

  5. pythonsorted_[转].Python中sorted函数的用法

    我们需要对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2.用built-in函数so ...

  6. python中sorted函数的用法及字典如何根据键或值进行排序

    一:官方对sorted的文档: sorted(iterable[,cmp,[,key[,reverse=True]]]) 作用:Return a new sorted list from the it ...

  7. python中int函数的用法浅析_Python中int()函数的用法浅析

    int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...

  8. python中int用法,Python中int()函数的用法浅析

    int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...

  9. python中pop函数的用法_python中pop()函数怎么用

    python中pop()函数的用法:pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回从列表中移除的元素对象.函数语法:[list.pop(ojb=list[-1])]. pop() ...

最新文章

  1. 微软发布通用型AI框架Avatar Framework
  2. BZOJ 2731 Luogu P3219 [HNOI2012]三角形覆盖问题 (扫描线)
  3. word的公式后加编码后自动变小
  4. maven实现多模块热部署
  5. 津津的储蓄计划(洛谷-P1089)
  6. 打印循环换行_一个案例轻松认识Python 循环语句(for)——10以内的素数
  7. Java经纬度坐标转换到平面坐标
  8. 国土空间规划数据汇交标准_国土空间规划数据治理指南来了
  9. redis的简单安装和配置文件的参数
  10. MTK 驱动开发---Memory 移植
  11. 《你的灯亮着吗》第一遍读后感
  12. python数星星问题
  13. dva使用及项目搭建
  14. 阿里云发送邮件(mail)失败
  15. 微信小程序项目实例Java后台的小程序求职招聘|兼职管理系统
  16. 数据治理的时代演变之道:大数据分析与机器学习落地应用的未来
  17. JS获取指定特殊字符之间的字符
  18. 单源最短路径:最短路径性质的证明
  19. css !important用法以及CSS样式使用优先级判断
  20. 为什么无线AP标称的速率和实际速率不一致?(空口速率)

热门文章

  1. [原创]windows server 2012 AD架构 试验 系列 – 5 AD备份与还原
  2. fft ocean注解
  3. sqlite 增删改查附代码
  4. IIS 错误代码大汇总
  5. matlab 并联机械臂_MATLAB robot toolbox 机械臂轨迹规划
  6. cpu使用率 htop显示_用top、vmstat、Htop、sar命令在Linux系统中检查CPU使用率/利用率...
  7. 惠普z840工作站linux,HP Z840 工作站,高清非编工作站
  8. 内表数据写到服务器上
  9. 数据库密码过期 怎么修改
  10. Payment Terms 付款条件