operator模塊提供的itemgetter函數(shù)用于獲取對象的哪些維的數(shù)據(jù),參數(shù)為一些索引或鍵值。
用法示例:
from operator import itemgetter
ll = [1, 2, 3]
dd = {'name': 'mxt', 'age': 18, 'gender': 'female'}
func1 = itemgetter(1) # 定義函數(shù),獲取對象第1個域的值
res1 = func1(ll) # 2 <class 'int'>
func2 = itemgetter(0, 2) # 定義函數(shù),獲取對象第0個域和第2個的值
res2 = func2(ll) # (1, 3) <class 'tuple'>
func3 = itemgetter('name')
res3 = func3(dd) # mxt <class 'str'>
func4 = itemgetter('name', 'gender')
res4 = func4(dd) # ('mxt', 'female') <class 'tuple'>
注意:operator.itemgetter函數(shù)獲取的不是值,而是定義了一個函數(shù),通過該函數(shù)作用到對象上才能獲取值。
應用舉例:根據(jù)第1個域和第2個域進行排序
data = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
data1 = sorted(data, key=lambda x: (x[1], x[2]))
# [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
data2 = sorted(data, key=itemgetter(1, 2))
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]