Python中的operator.itemgetter函数和sorted函数

operator.itemgetter()函数:

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

#coding:utf-8
import operator

a = [1,2,3]
b = operator.itemgetter(1)
print b(a)
b = operator.itemgetter(1,0)
print b(a)

#输出
2
(2,1)

b = operator.itemgetter(1)获取的是对象的第一个域

而b = operator.itemgetter(1,0)获取的是对象的第一个域和第0个值

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


sorted()排序函数

Python内置的排序函数sorted()可以对list或者iterator进行排序

#coding:utf-8
import operator

#students为类对象的list,每个成员有三个域
students = [('john','A',15),('jane','B',12),('dave','B',10)]
#key为函数,指定取待排序元素的哪一项进行排序
b = sorted(students,key=lambda student:student[2])
print b
#[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

#利用operator.itemgetter()函数,指定取待排序元素的哪一项进行排序
b = sorted(students,key=operator.itemgetter(2))
print b
#[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

#多级排序,先比较第一个域,在比较第二个域
b = sorted(students,key=operator.itemgetter(1,2))
print b
#[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

#reverse参数是一个bool变量,表示升序还是降序(默认降序)升序:reverse=True
b = sorted(students,key=operator.itemgetter(1,2),reverse=True)
print b
#[('jane', 'B', 12), ('dave', 'B', 10), ('john', 'A', 15)]

                                    
发布了20 篇原创文章 · 获赞 4 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览