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

本文介绍了Python中operator模块的itemgetter与attrgetter函数的使用方法,通过实例展示了如何利用这两种函数对元组和具名元组进行值的提取与排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值