# -*-  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. SHA信息摘要

    SHA算法是在MD4的基础上演进而来的,通过SHA算法能够获得一个固定长度的摘要信息.   SHA算法系列有SHA-1(也成为SHA),SHA-224,SHA-256,SHA-384和SHA-512这 ...

  2. one thinkphp 文档

    http://document.onethink.cn/manual_1_0.html#onethink_usehelp_config 官网:http://www.onethink.cn/topic/ ...

  3. makefile编写---.so动态库的生成和调用

    http://blog.sina.com.cn/s/blog_559f6ffc0100fl3z.html  动静 http://blog.csdn.net/yuyunliuhen/article/de ...

  4. 回调函数(callback)是什么?

    你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这个例子里,你的电话号码就叫回调函数,你把电话留给 ...

  5. Git安装部署

    1.1 最新git源码下载地址 https://github.com/git/git/releases https://www.kernel.org/pub/software/scm/git/ 1.2 ...

  6. 【Android 多语言切换简单实例分享】

    一.Android多语言切换 Android应用的开发不可能仅仅针对某一个国家或者区域使用,各国间语言文化各不同样,因此一个优秀的APP必须支持多种语言,为了实现这个特性,Android给出了一个解决 ...

  7. iPhone程序中的加密处理

    本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6650478     原文链接 : http://www.yifeiyang.ne ...

  8. TP【连接数据库配置及Model数据模型层】

    [连接数据库配置及Model数据模型层] convertion.php config.php 在config.php做数据库连接配置 制作model模型 a) model本身就是一个类文件 b) 数据 ...

  9. 学习 NGINX

    At a high level, configuring NGINX Plus as a web server is a matter of defining which URLs it handle ...

  10. Java 自带的加密类MessageDigest类(加密MD5和SHA)

    Java 自带的加密类MessageDigest类(加密MD5和SHA) - X-rapido的专栏 - CSDN博客 https://blog.csdn.net/xiaokui_wingfly/ar ...