1、list中的sort()方法: 

def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__
""" L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
pass
'''
key:是排序的条件,可以是:key=int,key=len, key=lambda..
reverse:表示是否反序,默认从小到大,默认为Flase
'''
##一个list调用sort方法后,对原list进行排序
## 1、最简单的排序
l = [5,2,3,1,4 ]
l .sort()
print(l) ##输出:[1, 2, 3, 4, 5] l.sort(reverse=True)#反序
print(l) ##输出:[5, 4, 3, 2, 1] ##2、字符串排序
StrList = ['fb', 'bx', 'csw', 'qb', 'qqa', 'eeeed']
2.1 一般字典序排列,但是大写在前,小写在后!!
StrList.sort()
print(StrList) ##字符串列表是按照第一个字符的大小排序的
##输出:['Fast', 'Smooth', 'fast', 'is', 'is', 'smooth'] 2.2忽略大小写,按abcd顺序
StrList.sort(key=str.lower)
print(StrList) ##输出:['Fast', 'fast', 'is', 'is', 'Smooth', 'smooth'] 2.3按照字符串长度排序
StrList.sort(key=len)
print(StrList)##输出:['is', 'is', 'fast', 'Fast', 'Smooth', 'smooth'] StrList.sort(key=len, reverse=True)#反序
print(StrList) ##输出:['Smooth', 'smooth', 'fast', 'Fast', 'is', 'is']

其他:

  1、sort()配合lambda()进行排序:

 l = [[2, 2, 3], [1, 4, 5], [5, 4, 9]]
l.sort(lambda x:x[0]) ##按照第一个元素进行排序
print(l) ##输出:[[1, 4, 5], [2, 2, 3], [5, 4, 9]]
'''
匿名函数的x,表示的是l列表中的每一个成员元素 x[0] :表示列表里面列表的第一个成员元素
'''

  2、也可以对对对象的属性进行排序

2、sorted()方法

 def sorted(*args, **kwargs): # real signature unknown
"""
Return a new list containing all items from the iterable in ascending order. A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
"""
'''
sorted(L)返回一个排序后的L,不改变原始的L;
  L.sort()是对原始的L进行操作,调用后原始的L会改变,没有返回值。【所以a = a.sort()是错的啦!a = sorted(a)才对!
sorted()适用于任何可迭代容器,list.sort()仅支持list(本身就是list的一个方法) '''

 1、sort配合lambda进行排序

 2、sort配合lambda进行排序

  若是可迭代序列的成员元素是对象,那么同样可以用sorted方法进行排序: 对象.成员变量

 >>> class Student:
def __init__(self, name, grade, age):
self.name = name
self.grade = grade
self.age = age
def __repr__(self):
return repr((self.name, self.grade, self.age))
>>> student_objects = [
Student('john', 'A', 15),
Student('jane', 'B', 12),
Student('dave', 'B', 10),
]
>>> sorted(student_objects, key=lambda student: student.age) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

3、如果第一个排序条件相同,则按照第二个条件排序

a = [[2,3],[4,1],(2,8),(2,1),(3,4)]
b = sorted(a,key=lambda x: (x[0], -x[1]))
print(b)
'''
b = sorted(a,key=lambda x:(条件a,条件b))
'''

4、字典排序:

 ## 面试很可能会遇到
dic = {'a':2,'b':1} 1、按照key排序
d = sorted(dic ,key = lambda k:k[0]) 2、按照values排序
e = sorted(dic , key = lambda k:k[1])

5、字典的key-values互换

 dic = { 'a':1, 'b':2,'c':3}
# 字典生成式
{values:key for key,values in dic.items()} ## 记住dic.items()变成了items[('a',1),('b',1)]

python--sort()和sorted()高级排序的更多相关文章

  1. 【转载】 python sort、sorted高级排序技巧

    这篇文章主要介绍了python sort.sorted高级排序技巧,本文讲解了基础排序.升序和降序.排序的稳定性和复杂排序.cmp函数排序法等内容,需要的朋友可以参考下 Python list内置so ...

  2. python sort、sorted高级排序技巧(转)

    add by zhj: 没找到原文.可以按多个维度进行排序,而且可以指定他们的排序方向,如果维度都是数字,排序比较容易,用+/-号就可以 指定排序方向.否则,就调用多次sorted进行排序了,而且要按 ...

  3. python sort、sorted高级排序技巧

    文章转载自:脚本之家 Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的 ...

  4. 【Python】 sort、sorted高级排序技巧

    文章转载自:脚本之家 这篇文章主要介绍了python sort.sorted高级排序技巧,本文讲解了基础排序.升序和降序.排序的稳定性和复杂排序.cmp函数排序法等内容,需要的朋友可以参考下 Pyth ...

  5. sort、sorted高级排序-Python3.7 And 算法<七>

    1.sort(*, key=None, reverse=False) sort()接受两个参数,这两个参数只能通过关键字(关键字参数)传递. 参数key:带一个参数的函数(排序时,会依次传入列表的每一 ...

  6. python sort 和sorted排序

    当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建方法sort() 可以直接对列表进行排序 用法: list. ...

  7. Python中排序函数sorted和排序方法sort的异同点对比分析

    Python中对序列进行排序有两种方法,一种是使用python内置的全局sorted函数,另一种是使用序列内置的sort方法. 一. 两者相同点 在支持sort方法的序列中都可以对序列进行排序: 二者 ...

  8. python sort和sorted的区别以及使用方法

    iteralbe指的是能够一次返回它的一个成员的对象.iterable主要包括3类: 第一类是所有的序列类型,比如list(列表).str(字符串).tuple(元组). 第二类是一些非序列类型,比如 ...

  9. python sort和sorted函数

    sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 ...

  10. python sort与sorted使用笔记

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3 ...

随机推荐

  1. 初识ldap

    什么是LDAP? LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的, 但是简单多了并且可以根据需要定制.与 ...

  2. hbase-0.92.1表备份还原

    原表结构和数据 hbase(main):021:0* describe 'test' DESCRIPTION ENABLED {NAME => ', TTL = true > ', COM ...

  3. 微信小程序开发学习(一):开发前准备

    开发前准备 Step1:注册 微信小程序开放平台: https://mp.weixin.qq.com/cgi-bin/wx 开发者注册: https://mp.weixin.qq.com/wxopen ...

  4. bootstrap全局样式

    内联子标题: 显示如下: 主体副本: 显示如下: 对齐类: 显示如下: 强调类: 显示如下: 缩略语: 地址: 表格: 加一个class:“table-striped” js里面的奇数偶数行(odd) ...

  5. WinHex18.4算法分析

    经过分析,注册码分为六个部分: Name: "xxx" Addr1: "yyy" Addr2: "zzz" 这三个字符不代表长度 Key1: ...

  6. windows下Go升级及GoLand的安装激活

    之前在qor/China上问golang项目包有没有一键安装,有位朋友给出了回复: 于是,尝试了下升级Go,目前版本是1.10.1,现升级为为1.12.2.步骤如下: 一.下载安装包 下载地址:htt ...

  7. Excel关联xml文件

    1.新建没传值的xml文件,变量名称自己定义好 2.打开excel,如果之前没有设置过,点击选项 如果当前Excel菜单栏中没有开发工具项,在自定义功能区先勾选上开发选项 3.点右下角的xml映射 弹 ...

  8. Jmeter之正则表达式提取器应用

    说到Jmeter正则表达式提取器的应用,就不得不说到关联.所谓关联,就是把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用. Jmeter中关联是通过“添加—后置处 ...

  9. python 自动化之路

    https://www.cnblogs.com/yangliheng/category/878973.html

  10. leetcode python 042收集雨水

    '''给定n个非负整数表示每个条的宽度为1的高程图,计算下雨后能够捕获多少水.例如,鉴于[0,1,0,2,1,0,1,3,2,1,2,1],返回6.这个题要先算出盛满水后的高程图,减去前者就是雨水.盛 ...