Python的itemgetter

31 阅读1分钟
  • Python 标准库 operator 里的一个小工具,用来“预编译”一条“取元素”的操作,返回的是一个可调用的对象。
  • 最常见的场景就是一次性从列表/元组/字典里按序号或键抽字段。
  • 比写 lambda 快、比手写函数省代码。
from operator import itemgetter

data = ('apple', 'banana', 'cherry')
f = itemgetter(1)      # 先把“取索引 1”这个动作编译成 f
f(data)                # 调用:'banana'
itemgetter(0, 2)(data)      # ('apple', 'cherry')

record = {'name': 'Bob', 'age': 25, 'city': 'SH'}
itemgetter('name', 'city')(record)   # ('Bob', 'SH')
# 等价但 itemgetter 更快
lambda x: x[1]            # 每次排序都要解析字节码
itemgetter(1)             # 一次性生成 C 级函数指针