欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > itemgetter() 是 Python operator 模块中的一个函数,主要用于从 字典、列表、元组等数据结构中取值

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

2025/4/24 9:30:07 来源:https://blog.csdn.net/u013565133/article/details/145703067  浏览:    关键词:itemgetter() 是 Python operator 模块中的一个函数,主要用于从 字典、列表、元组等数据结构中取值

如何使用 itemgetter()

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


1. itemgetter() 取字典 key 的值

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

from operator import itemgetterstudents = [{"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 itemgetterstudents = [(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 itemgetterstudents = [{"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 itemgetterstudents = [{"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() 你要取哪里,它就帮你自动取值!” 🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词