# -*-  coding:utf-8 -*-
'''
用法:
sorted(iterable[, cmp[, key[, reverse]]])
s.sort([cmp[, key[, reverse]]]) ‰‰cmp 为用户定义的任何比较函数,函数的参数为两个可比较的元素(来自iterable 或
者list),函数根据第一个参数与第二个参数的关系依次返回-1、0 或者+1(第一个参
数小于第二个参数则返回负数)。该参数默认值为None。
‰‰key 是带一个参数的函数,用来为每个元素提取比较值,默认为None(即直接比较每个元素)。
‰‰reverse 表示排序结果是否反转。 sort和 sorted的区别:
1、sorted() 作用于任意可迭代的对象,而sort() 一般作用于列
2、当排序对象为列表的时候,。sorted() 函数会返回一个排序后的列表,原有列表保持不
变;而sort() 函数会直接修改原有列表,函数返回为None。
3、无论是sort() 还是sorted() 函数,传入参数key 比传入参数cmp 效率要高cmp 传入
的函数在整个排序过程中会调用多次,函数开销较大;而key 针对每个元素仅作一次处理,
因此使用key 比使用cmp 效率要高。
'''
#技巧1 对字典进行排序
import operator
phonebook = {'Linda': '', 'Bob': '', 'Carol': ''}
sorted_pb = sorted(phonebook.iteritems(),key=operator.itemgetter(0),reverse=True)
print sorted_pb #技巧2 ‰多维list排序
# 分别表示学生的姓名,成绩,等级
gameresult = [['Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'],\
['Rob',86,'E']] # 当第二个字段成绩相同的时候按照等级从低到高排序
sorted_pb = sorted(gameresult , key=operator.itemgetter(2, 1)) #技巧3 ‰字典中混合list 排序
mydict = { 'Li': ['M',7],
'Zhang': ['E',2],
'Wang': ['P',3],
'Du': ['C',2],
'Ma': ['C',9],
'Zhe': ['H',7] }
#针对字典mydict 的value 结构[n,m] 中的m 按照从小到大的顺序排列。
sorted(mydict.iteritems(), key=lambda (k,v): operator.itemgetter(1)(v)) #技巧4 ‰List 中混合字典排序
gameresult = [{ "name":"Bob", "wins":10, "losses":3, "rating":75.00 },
{ "name":"David", "wins":3, "losses":5, "rating ":57.00 },
{ "name":"Carol", "wins":4, "losses":5, "rating ":57.00 },
{ "name":"Patty", "wins":9, "losses":3, "rating ": 71.48 }] #针对list 中的字典元素按照rating 和name进行排序的实现方法。
sorted(gameresult , key=operator.itemgetter("rating","name"))

建议37:按需选择sort或sorted的更多相关文章

  1. 数据结构 - 只需选择排序(simple selection sort) 详细说明 和 代码(C++)

    数据结构 - 只需选择排序(simple selection sort) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28601 ...

  2. 剑指offer第32题:把数组排成最小的数及关于list.sort()和sorted( Iterable object )函数的相关知识

     * 解题思路:  * 先将整型数组转换成字符数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关键就是制定比较规则.  * 排序规则如下:  * 若ab > ba 则 a & ...

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

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

  4. Python中sort、sorted的cmp参数废弃之后使用cmp_to_key实现类似功能

    Python2.1以前的排序比较方法只提供一个cmp比较函数参数,没有__lt__等6个富比较方法, Python 2.1引入了富比较方法,Python3.4之后作废了cmp参数.相应地从Python ...

  5. 测试对于list的sort与sorted的效率

    sorted from time import clock from random import randint start = clock() a = [randint(0,1000000) for ...

  6. [python学习] 语言基础—排序函数(sort()、sorted()、argsort()函数)

    python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 ls = list([5, 2, 3, 1, 4]) new_ls = sorted ...

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

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

  8. Python中的 sort 和 sorted

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

  9. Python3:排序函数sort() 和 sorted() 之介绍

    今天来讲一下Python中的排序函数.Python中有2个内建的排序函数,分别为sort() 和 sorted() 下面介绍分别介绍一下2个函数: 1.有一个列表 :a=[1,4,5,88,0,7], ...

随机推荐

  1. Unity3D学习笔记——NGUI之UIInput

    UIInput:这个组件可以用于创建输入框和编辑文本. 效果图如下: 一:使用步骤 1.首先创建一个背景,可以用Sprite也可以是Widget. 我这里使用的是空白的Widget 2.为其添加一个L ...

  2. html5离线缓存使用

    html5 离线缓存使用以及注意事项 1.index.html中加入离线缓存的声明文件 如:<!DOCTYPE html><html manifest="test.appc ...

  3. iOS-ASIHTTPRequest框架学习

    本文转载至 http://www.cnblogs.com/A-Long-Way-Chris/p/3539679.html 前段时间在公司的产品中支持了够快网盘,用于云盘存储. 在这个过程中,学习到了很 ...

  4. bin/mysqld: error while loading shared libraries: libnuma.so.1: 安装mysql

    如果安装mysql出现了以上的报错信息.这是却少numactl这个时候如果是Centos就yum -y install numactl就可以解决这个问题了. ubuntu的就sudo apt-get ...

  5. Youth Is Not a Time of Life

    Youth is not a time of life; it is a state of mind.青春不是年华,而是心境: It is not a matter of rosy cheeks, r ...

  6. [转] android获取手机信息大全

    原文链接:http://blog.csdn.net/hytfly/article/details/8552483 IMEI号,IESI号,手机型号: private void getInfo() { ...

  7. shell脚本中格式化日期

    date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] ...

  8. 前端 为什么我选择用框架而不是Jquery

    对于很多习惯用Jquery的前端甚至后端,都很不解,为什么不用Jquery而是框架.觉得框架学起来麻烦,成本高,今天我以我浅薄的知识来总结一下为什么前台开发选择用框架: 前台开发,主要的性能是卡在回流 ...

  9. isnull在order by中的使用——让我长见识了

    select * from VisitLogorder by ISNULL(NextVisitDate,'2299-01-01') 此sql的作用是查找表中的数据,并按照NextVisitDate字段 ...

  10. Java前端Rsa公钥加密,后端Rsa私钥解密(支持字符和中文)

    Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...