# 可迭代對(duì)象,計(jì)算和排序等處理
from itertools import groupby
from operator import itemgetter
L = [('grape', 100, 2), ('grape', 3, 2), ('apple', 15, 2), ('apple', 10, 2), ('apple', 4, 2), ('banana', 3, 2)]
for x, y in groupby(L, itemgetter(0)):
inst_y = list(y) # 需要實(shí)例化,因?yàn)榈谝淮斡?jì)算itertools對(duì)象后會(huì)被釋放,從而第二次計(jì)算itertools對(duì)象找不到想要的結(jié)果,而實(shí)例化后不會(huì)
# operator.itemgetter() 獲取的不是值,而是定義一個(gè)函數(shù),通過該函數(shù)作用到對(duì)象上才能獲取值。
"""
from operator import itemgetter
a = [1, 2, 3]
b = itemgetter(1) # 定義函數(shù)b,獲取對(duì)象的第1個(gè)值
c = itemgetter(1, 0) # 定義函數(shù)c,獲取對(duì)象的第1、0個(gè)值
print(b(a)) 2
print(c(a)) (2, 1)
a = {'name': 'wangke', 'age':18, 'sex': 'man'}
b = itemgetter('age')
c = itemgetter('name', 'age')
print(b(a)) 18
print(c(a)) ('wangke', 18)
"""
print(sum(map(itemgetter(1), inst_y)))
print(sum(map(itemgetter(2), inst_y)))
當(dāng)然itemgetter函數(shù)也可以用匿名函數(shù)lambda代替
浙公網(wǎng)安備 33010602011771號(hào)