当前位置: 首页 > article >正文

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

如何使用 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() 你要取哪里,它就帮你自动取值!” 🚀


http://www.kler.cn/a/553568.html

相关文章:

  • Redis_基础
  • Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300的秘密武器
  • ubuntu22.04安装tigervnc使用vnc进行访问
  • 《Python在数据可视化中的应用与实践》
  • 【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步
  • 负载均衡 方式
  • 【Elasticsearch】搜索时分片路由
  • Go入门之函数
  • 高并发系统架构设计全链路指南
  • 自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone
  • 应用程序中的网络协议:原理、应用与挑战
  • Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)
  • 什么是网关,网关的作用是什么?网络安全零基础入门到精通实战教程!
  • 当Qt遇见IOCP:用C++打造高并发服务器
  • 【物种分布】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
  • 51单片机学习之旅——在LCD1602上显示时钟
  • FPGA实现GTY光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
  • DeepSeek-R1:通过强化学习激励大型语言模型的推理能力
  • javaSE学习笔记22-线程(thread)-线程通信、线程池
  • 应用接入gpt