attrgetter attrgetter 与 itemgetter 作用类似, 它创建的函数根据名称提取对象的属性。 如果把多个属性名传给 attrgetter, 它也会返回提取的值构成的元组。 此外, 如果参数名中包含 .(点号
attrgetter
attrgetter 与 itemgetter 作用类似, 它创建的函数根据名称提取对象的属性。 如果把多个属性名传给 attrgetter, 它也会返回提取的值构成的元组。 此外, 如果参数名中包含 .(点号) , attrgetter 会深入嵌套对象, 获取指定的属性。
from collections import nametuple # 命名元组 LatLong = namedtuple('LatLong', 'lat long') Metropolis = namedtuple('Metropolis', 'name cc pop coord') metro_areas = [Metropolis(name, cc, pop, LatLong(lat, long)) for name, cc, pop, (lat, long) in metro_data] from operator import attrgetter name_lat = attrgetter('name', 'coord.lat') for item in sorted(metro_areas, key=attrgetter('coord.lat')): print(name_lat(item))可以应用到实际项目中。dict比较占用内存。nametuple是个不错的选择。搭配attrgetter有很多可能
methodcaller
它的作用与 attrgetter 和 itemgetter 类似, 它会自行创建函数
from operator import methodcaller a = 'hello world' upcase = methodcaller('upper') upcase(a)有点类似getattr的感觉,但是却有点不一样
【文章由韩国大带宽服务器 http://www.558idc.com/lg.html处的文章,转载请说明出处】