books = [ {"제목" : "혼자 공부하는 파이썬"
, "가격" : 18000},
{"제목" : "혼자 공부하는 머신러닝 + 딥러닝"
, "가격" : 26000} ,
{"제목" : "혼자 공부하는 자바스크립트"
, "가격" : 24000}
]
# 콜백함수 : 함수의 인자(argument)에 사용하는 함수.
def 가격추출함수(book):
return book["가격"]
print("가장 저렴한 책")
# key 매개변수를 통해 비교 기준을 지정.
print(min(books, key=lambda book : book["가격"])))
print()
print("가장 비싼 책")
print(max(books, key=가격추출함수))
-- 실행결과 --
가장 저렴한 책
{'제목': '혼자 공부하는 파이썬', '가격': 18000}
가장 비싼 책
{'제목': '혼자 공부하는 머신러닝 + 딥러닝', '가격': 26000}
operator 모듈의 itemgetter()함수는 특정 요소를 추출하는 함수를 만드는 함수.docs.python.org/3/library/operator
operator.itemgetter(item)
operator.itemgetter(*items)
__getitem__() 메서드를 사용해서 지정된 항목(item)을 가져옴.__getitem__()이 허용하는 어떤 타입이든 가능.def itemgetter(*items):
if len(items) == 1:
item = items[0]
def g(obj):
return obj[item]
else:
def g(obj):
return tuple(obj[item] for item in items)
return g
obj[item]) 반환하도록 만들어짐.# 'itemgetter(2)'는 'lambda obj: obj[2]'와 서로 같은 함수.
itemgetter(2) == lambda obj: obj[2]
# 'itemgetter(2, 5, 3)'는 'lambda obj: (obj[2], obj[5], obj[3])'와 같은 함수.
itemgetter(2, 5, 3) == lambda obj: (obj[2], obj[5], obj[3])
itemgetter(1)('ABCDEFG')
# 실행결과 : 'B'
itemgetter(1, 3, 5)('ABCDEFG')
# 실행결과 : ('B', 'D', 'F')
itemgetter(slice(2, None))('ABCDEFG')
# 실행결과 : 'CDEFG'
soldier = dict(rank='captain', name='dotterbart')
itemgetter('rank')(soldier)
# 실행결과 : 'captain'
inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
getcount = itemgetter(1)
list(map(getcount, inventory))
# 실행결과 : [3, 2, 5, 1]
sorted(inventory, key=getcount)
# 실행결과 : [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
# operator 모듈의 itemgetter() 함수를 가져옴.
from operator import itemgetter
books = [ {"제목" : "혼자 공부하는 파이썬"
, "가격" : 18000},
{"제목" : "혼자 공부하는 머신러닝 + 딥러닝"
, "가격" : 26000} ,
{"제목" : "혼자 공부하는 자바스크립트"
, "가격" : 24000}
]
print("가장 저렴한 책")
# key 매개변수를 통해 비교 기준을 지정.
print(min(books, key = itemgetter('가격')))
print()
print("가장 비싼 책")
print(max(books, key = itemgetter('가격')))
-- 실행결과 --
가장 저렴한 책
{'제목': '혼자 공부하는 파이썬', '가격': 18000}
가장 비싼 책
{'제목': '혼자 공부하는 머신러닝 + 딥러닝', '가격': 26000}
# operator 모듈의 itemgetter() 함수를 가져옴.
from operator import itemgetter
data = [ ("가나다", 3), ("abc", 1), ("123", 2) ]
# 두 번째 요소(숫자)를 기준으로 정렬.
sorted_data = sorted(data, key=itemgetter(1))
print(sorted_data)
-- 실행결과 --
[('abc', 1), ('123', 2), ('가나다', 3)]