itemgetter() 是 Python operator 模块中的一个函数,主要用于从 字典、列表、元组等数据结构中取值

发布于:2025-02-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

如何使用 itemgetter()

itemgetter() 是 Python operator 模块中的一个函数,主要用于从 字典、列表、元组等数据结构中取值。它的作用类似一个自动化的 “取值器”,可以让你更方便地提取数据。


1. itemgetter() 取字典 key 的值

如果你有一堆字典,比如一个学生信息列表,你想按 “age” 排序:

from operator import itemgetter

students = [
    {"name": "Tom", "age": 25},
    {"name": "Alice", "age": 22},
    {"name": "Jerry", "age": 30}
]

# 使用 itemgetter() 按 age 排序
sorted_students = sorted(students, key=itemgetter("age"))
print(sorted_students)

输出:

[
    {'name': 'Alice', 'age': 22},
    {'name': 'Tom', 'age': 25},
    {'name': 'Jerry', 'age': 30}
]

📌 等效于 lambda x: x["age"],但 itemgetter("age") 更简洁、高效!


2. itemgetter() 取列表/元组的索引值

如果你有一个 列表,其中每个元素是一个元组(比如 (序号, 名字, 分数)),你想按 分数排序

from operator import itemgetter

students = [
    (1, "Tom", 88),
    (2, "Alice", 95),
    (3, "Jerry", 90)
]

# 按索引 2(分数)排序
sorted_students = sorted(students, key=itemgetter(2))
print(sorted_students)

输出:

[
    (1, 'Tom', 88),
    (3, 'Jerry', 90),
    (2, 'Alice', 95)
]

📌 itemgetter(2) 取每个元组 索引 2 的值,等效于 lambda x: x[2],但 itemgetter() 更快!


3. itemgetter() 一次取多个值

你可以让 itemgetter() 同时获取多个 key 或索引,比如按 年龄排序,年龄相同时按名字排序

from operator import itemgetter

students = [
    {"name": "Tom", "age": 25},
    {"name": "Alice", "age": 25},
    {"name": "Jerry", "age": 30}
]

# 先按 age 排序,再按 name 排序
sorted_students = sorted(students, key=itemgetter("age", "name"))
print(sorted_students)

输出:

[
    {'name': 'Alice', 'age': 25},
    {'name': 'Tom', 'age': 25},
    {'name': 'Jerry', 'age': 30}
]

📌 itemgetter("age", "name") 相当于 lambda x: (x["age"], x["name"]),但更清晰!


4. itemgetter() 用在 map()

你可以用 itemgetter() 从一堆数据里 批量取值,比如你有一堆字典,只想拿 “name” 字段:

from operator import itemgetter

students = [
    {"name": "Tom", "age": 25},
    {"name": "Alice", "age": 22},
    {"name": "Jerry", "age": 30}
]

# 取出所有学生的名字
names = list(map(itemgetter("name"), students))
print(names)

输出:

["Tom", "Alice", "Jerry"]

📌 map(itemgetter("name"), students) 直接提取所有 name,比 map(lambda x: x["name"], students) 更简洁


总结

itemgetter() 的作用:

  • itemgetter("key") 👉 取字典某个 key 的值
  • itemgetter(索引) 👉 取列表/元组的某个索引值
  • itemgetter(a, b) 👉 一次取多个值,可用于多级排序
  • lambda 更简洁、更快,代码更清晰!

一句话记住:
💡 “告诉 itemgetter() 你要取哪里,它就帮你自动取值!” 🚀


网站公告

今日签到

点亮在社区的每一天
去签到