Python中的sorted以及operator.itemgetter的用法

转载 2016年08月30日 20:46:13

作者:100thMountain

operator.itemgetter函数
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。

a = [1,2,3] 
>>> b=operator.itemgetter(1)      //定义函数b,获取对象的第1个域的值
>>> b(a) 

>>> b=operator.itemgetter(1,0)  //定义函数b,获取对象的第1个域和第0个的值
>>> b(a) 
(2, 1)

要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。

sorted函数
Python内置的排序函数sorted可以对list或者iterator进行排序,官网文档见:http://docs.python.org/2/library/functions.html?highlight=sorted#sorted,该函数原型为:

sorted(iterable[, cmp[, key[, reverse]]])

参数解释:

(1)iterable指定要排序的list或者iterable,不用多说;

(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:

      students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:
      students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
      sorted(students, key=lambda student : student[2])
(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:
      sorted(students, key=lambda student : student[2])

      key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。

有了上面的operator.itemgetter函数,也可以用该函数来实现,例如要通过student的第三个域排序,可以这么写:
sorted(students, key=operator.itemgetter(2)) 
sorted函数也可以进行多级排序,例如要根据第二个域和第三个域进行排序,可以这么写:
sorted(students, key=operator.itemgetter(1,2))

即先跟句第二个域排序,再根据第三个域排序。
(4)reverse参数就不用多说了,是一个bool变量,表示升序还是降序排列,默认为false(升序排列),定义为True时将按降序排列。

sorted函数更多的例子可以参考官网文档:https://wiki.python.org/moin/HowTo/Sorting/。

python sorted函数以及operator.itemgetter函数

参考: http://www.cnblogs.com/100thMountain/p/4719503.html http://blog.163.com/zhuandi_h/blog/static/18...
  • u012005313
  • u012005313
  • 2015年10月15日 17:15
  • 5696

Python中的sorted函数以及operator.itemgetter函数

Python内置的排序函数sorted可以对list或者iterator进行排序,官网文档见:http://docs.python.org/2/library/functions.html?highl...
  • lewsn2008
  • lewsn2008
  • 2013年09月26日 21:36
  • 26352

python中的sorted、iteritems和operator.itemgetter

最近在看《机器学习实战》,在学到第三章递归构建决策树时看到以下代码:def majorityCnt(classList): classCount = {} for vote in cl...
  • vivian_ll
  • vivian_ll
  • 2017年11月27日 19:07
  • 176

python iteritems(),itemgetter(),sorted()

operator.itemgetter()函数得到
  • u013713637
  • u013713637
  • 2014年09月24日 11:36
  • 3866

python——sorted函数、sort函数以及operator.itemgetter的使用

sort()vs sorted():  sort()是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None;sorted()是Python内置...
  • u012513525
  • u012513525
  • 2017年07月17日 16:31
  • 477

Python 中sorted函数和operator.itemgetter函数

operator.itemgetter函数 operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。 a =...
  • yang090510118
  • yang090510118
  • 2014年07月19日 17:47
  • 816

Python 中 sorted 的用法

sorted 排序方法主要是用在 list 和 dict 中。 sorted 介绍: 其中, iterable 是可迭代类型            cmp 是用于比较的函数,比较什么由key ...
  • lyc_yongcai
  • lyc_yongcai
  • 2017年06月18日 14:09
  • 370

Python: sorted,operator.itemgetter的用法

[Python]对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。 sort函数和sorted函数唯一的不同是,sort是在容器内排序,sorted生成一个新的排...
  • lilywri823
  • lilywri823
  • 2017年09月20日 21:53
  • 128

python2/3---sort方法与sorted函数的使用

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。    一、基本形式列表有自己的sort方法,其对列表进行原...
  • qq_34342154
  • qq_34342154
  • 2017年08月23日 01:04
  • 261

机器学习-朴素贝叶斯

一 开发环境:win7 64 位 + Pycharm5.0 + python3.4.4 二 工具包:numpy + matplotlib (对于microsoft visual c+...
  • kz745460163
  • kz745460163
  • 2016年01月09日 14:31
  • 158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python中的sorted以及operator.itemgetter的用法
举报原因:
原因补充:

(最多只允许输入30个字)