• 建议37:按需选择sort或sorted


    # -*-  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': '7750', 'Bob': '9345', 'Carol': '5834'}
    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"))
  • 相关阅读:
    SAP CRM WebClient UI上将text area里的文本清空的后台处理
    SAP Business Application Studio的权限控制
    Git安装与配置——详细教程1
    如何在Windows平台下安装配置Memcached
    详解PHP操作Memcache缓存技术提高响应速度的方法
    PHP开发小技巧②—实现二维数组根据key进行排序
    PHP开发小技巧③—实现多维数组转化为一维数组
    PHP开发小技巧①①—php实现手机号码显示部分
    curl实例-通过新浪股票接口获取股票信息
    中国菜刀的功能介绍和使用方法
  • 原文地址:https://www.cnblogs.com/tychyg/p/4935943.html
Copyright © 2020-2023  润新知