zoukankan      html  css  js  c++  java
  • python函数系列之sorted()

    一. 有时候需要对List、Dict进行排序

    二.用法:sorted(iterable, cmp=None, key=None, reverse=False)

    三.参数说明:

    1. iterable:是可迭代类型;
    2. cmp:用于比较的函数,比较什么由key决定;
    3. key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下:
      def f(a):
           return len(a)
      key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序;
    4. 排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值.

    四.工作中用到的类似,要查询分库分表指定的数据,因为涉及到多库多表,查询结果最终就是由tuple组成的list,而且需要按照时间降序来排列

    1 >>> sorted(students, key=lambda student : student[2])   # sort by age
    2 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 
    1 >>> from  operator import itemgetter,attrgetter
    2 >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
    3 >>> sorted(students,key=itemgetter(2))
    4 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

    对由字典排序 ,返回由tuple组成的List,不再是字典

    >>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4} 
    >>> sorted(d.iteritems(), key=itemgetter(1), reverse=True)
    [('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]

    用 operator 函数进行多级排序 (用 operator 函数来加快速度)

    1 >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
    2 >>> sorted(students, key=itemgetter(1,2))
    3 [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

    参考转载:https://www.cnblogs.com/sysu-blackbear/p/3283993.html

     
  • 相关阅读:
    HDU 5818 Joint Stacks
    HDU 5816 Hearthstone
    HDU 5812 Distance
    HDU 5807 Keep In Touch
    HDU 5798 Stabilization
    HDU 5543 Pick The Sticks
    Light OJ 1393 Crazy Calendar (尼姆博弈)
    NEFU 2016省赛演练一 I题 (模拟题)
    NEFU 2016省赛演练一 F题 (高精度加法)
    NEFU 2016省赛演练一 B题(递推)
  • 原文地址:https://www.cnblogs.com/yspass/p/8137082.html
Copyright © 2011-2022 走看看