# -*-  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. zeppelin部署

    1.下载解压2.修改conf/zeppelin-env.sh,添加如下两行 export ZEPPELIN_PORT= export MASTER=spark://master:7077 3.启动 b ...

  2. virtualbox 虚拟机硬盘扩容

    转自: http://jingyan.baidu.com/article/425e69e6aeede8be14fc1675.html

  3. hdu 4681(枚举+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...

  4. HDU2844 Coins 多重背包

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  5. 6、easyUI-拖放事件及应用

    一.EasyUI 基本的拖动和放置 直接代码看: <!doctype html> <html> <head> <meta http-equiv="C ...

  6. xpath与css基本使用方法

    path使用方法 1.工具Firefox50版本以下,安装插件firebug.firepath

  7. dict字典使用方法

    keys(). values() .items()方法 1.返回格式 dict_keys. dict_values 和 dict_items 2.常用于循环.迭代 for key in dict_te ...

  8. java.lang.VerifyError: Expecting a stack map frame

    https://blog.csdn.net/u013066244/article/details/78434134 对于java7而言,需要添加 -XX:-UseSplitVerifier(已实践). ...

  9. Exponentiation(高精度大数)

    Exponentiation Description Problems involving the computation of exact values of very large magnitud ...

  10. cocos2d-x-3.1rc0中找不到"extensions/ExtensionMacros.h"的问题

    笔者导入UI编辑器的资源时,提示无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory” 然后参考了3.0的一篇文章.得出 ...