zoukankan      html  css  js  c++  java
  • 建议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"))
  • 相关阅读:
    表单全选,不选和反选
    利用js改变宽,高等属性
    点击显示与隐藏
    改变div的不同属性
    给三个不同的div变色
    经典排序算法实现
    基本排序算法的实现
    排序的概念及分类实现
    #和##运算符实例
    #pragma预处理实例
  • 原文地址:https://www.cnblogs.com/tychyg/p/4935943.html
Copyright © 2011-2022 走看看