sort


sort 是应用在list上的方法: list的sort方法返回的是对已经存在的列表进行操作,无返回值,
sort 有3个参数:

  • cmp 比较函数,含2个参数,参数的值都是从可迭代对象中取出的,必须遵守大于返回1,等于返回0,小于返回-1
  • key 比较函数,含1个参数,参数的值取自可迭代对象中,指定可迭代对象中的一个元素进行排序
  • reverse 排序规则, bool值,默认False(升序),True(倒序)

看一个例子
1. 简单排序

L = [2, 3, 1]
# 升序排序
L.sort(reverse=False)
# 输出结果为
print L
>> [1, 2, 3]

2.key参数

L = [('a', 2), ('b', 1), ('c', 3), ('d', 4)]
# key 匿名函数(可以定义非匿名函数)形式 对迭代元素的 索引1号位进行排序
L.sort(key=lambda x:x[1], reverse=False)
# 输出结果为
print L
>> [('b', 1), ('a', 2), ('c', 3), ('d', 4)]  # 以迭代元素的 索引1号为标准进行排序

3.cmp参数

  • 利用cmp函数

    L = [('a', 2), ('b', 1), ('c', 3), ('d', 4)]
    # cmp 匿名函数(可以定义非匿名函数)形式 对迭代元素的 索引1号位进行排序
    L.sort(cmp=lambda x,y: cmp(x[1], y[1]), revserse=False)
    # 输出结果
    print L
    >> [('b', 1), ('a', 2), ('c', 3), ('d', 4)]  # 以迭代元素的 索引1号为标准进行排序
    
  • 利用自定义函数
    def cmp_func(x, y):x_num = x[1]y_num = y[1]if x_num > y_num:return 1elif x_num == y_num:return 0else:return -1L = [('a', 2), ('b', 1), ('c', 3), ('d', 4)]
    # cmp 匿名函数(可以定义非匿名函数)形式 对迭代元素的 索引1号位进行排序
    L.sort(cmp=cmp_func, reverse=False)
    # 输出结果
    print L
    >> [('b', 1), ('a', 2), ('c', 3), ('d', 4)]  # 以迭代元素的 索引1号为标准进行排序
    

    sorted


    sorted 不同于 sort只能用于 list, sorted可以接受任意迭代对象,返回一个 新的 list类型的数据
    sorted 有4个参数

    • iterable 任意迭代对象
    • cmp 与sort使用类似
    • key 同上
    • reserver 同上
      sorted 的使用与 sort一致 可参考sort进行操作

一个不规范的排序问题


需求: 有一部(以 安家 为例) 电视剧的 单集名称及其他信息,单集命名方式为: 01_安家; 02_安家… 其中掺杂这样的特别篇:
安家_特辑; 安家花絮; 安家_剧组轶事…等不规范的名字 数据格式如下:

"""变量解释: series_list 剧集列表 里面嵌套 单集信息字典"""
series_list = [
{'video_id': 111,
'video_name': '01_安家',
'content_type': '电视剧'
},
{'video_id': 112,
'video_name': '02_安家',
'content_type': '电视剧'
},
{'video_id': 113,
'video_name': '03_安家',
'content_type': '电视剧'
},
{'video_id': 114,
'video_name': '安家_特辑',
'content_type': '电视剧'
},
{'video_id': 115,
'video_name': '安家_剧组轶事',
'content_type': '电视剧'
},
{'video_id': 116,
'video_name': '安家花絮',
'content_type': '电视剧'
},
]

问题: 请以单集索引(如 02_安家 的索引为 2)对该数组进行排序

"""分析: 一般的做法是进行遍历 取出需要进行排序的部分 剔除掉 无单集索引的 然后进行有索引单集的排序但是 这种方法实不可取"""
利用sort进行排序(sorted类似)
这个时候 sort的参数key已经满足不了复杂的逻辑处理了 所以考虑用 cmp参数来输入自定义的排序函数 如下
def rankDeal(x, y):try:x_num = x['video_name'].split('_')[0]except:x_num = 0try:y_num = y['video_name'].split('_')[0]except:y_num = 0if x_num > y_num:return 1elif x_num == y_num:return 0else:return -1
series_list.sort(cmp=rankDeal, reverse=True)
至此可以得到一个 单机索引倒序排序的 列表

最后提问
如何得到正序的列表,但是不规则命名的单集排序靠后呢?

不规则数据排序 Python sort sorted相关推荐

  1. R语言数据排序函数sort, order rank实战

    R语言数据排序函数sort, order & rank实战 目录 R语言数据排序函数sort, order & rank实战 #sort vs. order vs. rank函数基础 ...

  2. python工资津贴的计算和排序-python sort、sorted高级排序技巧

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...

  3. python 排序函数 sort sorted 简介

    sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None: sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的 ...

  4. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

  5. python中sorted函数逆序_Python中sorted函数的用法(转)

    [Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返 ...

  6. mongo数据排序和分页显示

    数据排序 使用sort() 1 升序 -1 降序 自然排序 数据插入的顺序 $natural db.stu.drop(); db.stu.insert({"name":" ...

  7. Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序

    Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(一) 原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 (以后比较长的部 ...

  8. python sort 多级排序_sort、sorted排序技巧(多级排序)

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 示例: from operator import itemge ...

  9. python中的排序方法都有哪些_Python中的排序方法sort(),sorted(),argsort()等

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...

  10. python中sorted函数的作用_Python中排序方法sort、函数sorted的key参数的作用分析

    从Python2.4开始,list.sort方法 和 sorted方法 都增加了一个 'key' 参数用来在进行比较之前指定每个列表元素上要调用的函数,将函数的返回值作为比较的依据. 那么怎么使用这个 ...

最新文章

  1. 剑指offer:面试题07. 重建二叉树
  2. 是知当代之士、驰骛之曹,书读纵横,则思诸侯之变
  3. PM2中无法开启ES6的解决方案
  4. 什么是数据中心,它们是如何变化的?
  5. 随笔记录(2019.7.10)
  6. Java中的ThreadPoolExecutor类
  7. 【LeetCode笔记】287. 寻找重复数(Java、快慢指针、原地、链表)
  8. 关于信噪比-draft
  9. call stack是什么错误_Go语言(golang)的错误(error)处理的推荐方案
  10. python%20是什么运算
  11. sql 表变量 临时表_何时使用SQL临时表与表变量
  12. linux的文件permission需要设置,否则会使用as3的urlrequest失败
  13. Spring-boot + Mybatis-plus 3.0-gamma 配置记录
  14. 最短路—Johnson算法(解决负权边,判断负权环)
  15. SOLIDWORKS流体分析为什么两栋楼之间会感觉风大
  16. js学习小计5-零宽断言
  17. go import 导入包名前加下划线 _
  18. linux查看隐藏大文件夹,Linux系统隐藏文件/文件夹操作教程
  19. Centos7.8下Nmap的安装与使用
  20. 这份春招攻略,希望大家可以收藏!

热门文章

  1. sv编程语言_sv零星知识点
  2. 2015校园O2O商业模式解析——从社交切入
  3. Oracle 绑定变量窥视
  4. 生成身份证校验码(c语言)
  5. Python seaborn 条形图
  6. 浅谈web前端工程师hr面试经典问题20+
  7. HTML中设置td的字体颜色
  8. N个鸡蛋放到M个篮子中
  9. Python Spider入门
  10. 应用程序初始化(0xc0000034)失败