파이썬/파이썬 입문 공부일지

파이썬 공부일지 21. key 키워드 매개변수(min, max)

Tomitom 2022. 10. 20. 12:40
반응형

 

 

리스트에서 min()함수와 max()함수로 최솟값과 최댓값을 구할 수 있었습니다. 

만약 상품명과 가격이 담겨 있는 딕셔너리에서 상품명으로 가격의 최솟값과 최댓값을 구하려면 어떻게 할까요.

딕셔너리의 키 를 활용합니다. 

min() 함수와 max()함수에는 '어떤 값으로 비교'할 것인지 나타내는 key 라는 키워드 매개변수를 지정할 수 있습니다.

 

 

 
 
우선 상품들이 담겨있는 딕셔너리를 생성해줍니다.
딕셔너리는 { key : 값 }의 형태로 저장해요.
items = [{

    "상품": "어제 먹다 남은 파이",

    "가격": 21000
}, {
    "상품": "크리스마스 에디션 밤조림",
    "가격": 45000
}, {
    "상품": "우주대폭발 버튼",
    "가격": 72000
}]
 
 
상품을 모두 items 라고 하는 딕셔너리에 넣었다면 이제 최솟값과 최댓값으로
가장 저렴한 상품과 가장 비싼 상품을 구분해볼게요. 
 

def price(item):      -> 딕셔너리에서 가격값을 추출하는 함수를 만듭니다.  
    return item["가격"]     

print("# 가장 저렴한 상품") -> 가격값을 비교해서 최솟값을 구합니다. 
print(min(items, key=price))
print()

print("# 가장 비싼 상품") -> 가격값을 비교해서 최댓값을 구합니다. 
print(max(items, key=price))
 
 
 
 

 

 
 
결과값은 이렇게 나옵니다. 
 
 
 

 

 

그럼 여기서 함수를 따로 만들었던 것을 min ()안에 직접 넣어볼게요. 

이 때 콜백 함수를 람다lambda 로 바꾸면 함수를 따로 생성하지 않아도 됩니다. 

 

items = [{
    "상품": "어제 먹다 남은 파이",
    "가격": 21000
}, {
    "상품": "크리스마스 에디션 밤조림",
    "가격": 45000
}, {
    "상품": "우주대폭발 버튼",
    "가격": 72000
}]


print("# 가장 저렴한 상품")
print(min(items, key=lambda book : book["가격"]))
print()

print("# 가장 비싼 상품")
print(max(items, key=lambda book : book["가격"))
 
 
 
반응형