ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

学习 Python operator 模块的 itemgetter

2026/9/21 9:03:53 拓冰建站 浏览量
学习 Python operator 模块的 itemgetter

学习 Python operator 模块的 itemgetter

  • 0. 引言
  • 1. `itemgetter`函数说明
    • 1-1. 示例代码
    • 1-2. 多级排序

0. 引言

operator模块提供了一系列对操作符的函数化接口,例如:加法、乘法、比较操作等。

itemgetter函数是operator模块中的一个功能,它用于从其操作的对象中获取item。这在排序或者获取序列元素等操作中非常有用。

1. itemgetter函数说明

itemgetter函数创建一个可调用对象,该对象会从其接收的任何参数中获取item。

当你传递一个序列的索引给itemgetter时,它将返回一个函数,这个函数会从其接收的对象中获取给定索引的元素值。

1-1. 示例代码

from operator import itemgetter# 假设有一个学生列表,每个学生是一个包含姓名和分数的元组
students = [('Alice', 88),('Bob', 75),('Charlie', 92),('David', 78)
]# 使用 itemgetter 获取分数,用于排序
get_score = itemgetter(1)  # 创建一个函数,该函数从输入中获取索引为1的元素(即分数)# 使用 sorted 函数和 itemgetter 排序学生列表
sorted_students = sorted(students, key=get_score)print(sorted_students)
# 输出: [('Bob', 75), ('David', 78), ('Alice', 88), ('Charlie', 92)]

在这个示例中,itemgetter(1)创建了一个函数get_score,这个函数接收一个元组,并返回该元组的第二个元素(索引为1的元素,即分数)。然后,我们用这个函数作为sorted函数的key参数,来根据分数对学生列表进行排序。

1-2. 多级排序

itemgetter还可以接受多个索引,这样可以进行多级排序。例如:

data = [('Alice', 'Physics', 85),('Bob', 'Maths', 90),('Alice', 'Maths', 82),('Charlie', 'Physics', 88),('Bob', 'Physics', 95)
]# 首先按姓名排序,然后按科目排序
sorted_data = sorted(data, key=itemgetter(0, 1))print(sorted_data)

这将首先根据姓名排序,如果姓名相同,则按科目排序。itemgetter通过提供多个索引来实现这一点。

完结!