今天看书的时候看到这个,感觉还行。
大致总结一下,itemgetter 是以index的形势来获取相对应的值。
attrgetter是用 key来获取相对应的值。我个人觉得attrgetter比itemgetter功能强大在可以嵌套的提取元素,具体看代码。
其中 namedtuple是继承自tuple的子类。namedtuple创建一个和tuple类似的对象,而且对象拥有可访问的属性。
(见识短浅,假如有不足或者错误的地方,希望大佬指正)
具体看代码。
# *_*coding:utf-8 *_* from operator import itemgetter, attrgetter # ----A-------B---C----D--- data = [ ('老王', 18, 175, 75), ('阿汤哥', 15, 165, 70), ('罗宾森', 23, 180, 100), ('小风', 10, 171, 60), ('黄佬', 20, 175, 65), ] """itemgetter,它构建的函数会返回提取的值构成的元组""" get_c_d = itemgetter(2, 3) for value in data: print(get_c_d(value)) print("-------------------------------------") # 表示根据 C,D 来进行排序 for value in sorted(data, key=itemgetter(2, 3)): print(value) print("-------------------------------------") from collections import namedtuple size = namedtuple('size', 'height weight') stu = namedtuple('stu', 'name age size') data_stu = [stu(name, age, size(height, weight)) for name, age, height, weight in data] """用attrgetter来处理 主要用于嵌套的东西吧""" get_name_age = attrgetter('name','size.height') for value in sorted(data_stu,key=attrgetter('size.height')): print(get_name_age(value)) print("-------------------------------------")