Python operator中 itemgetter 和 attrgetter的区别(1ni)

今天看书的时候看到这个,感觉还行。

大致总结一下,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("-------------------------------------")

猜你喜欢

转载自blog.csdn.net/qq_40952927/article/details/80421793