max 함수의 기본형은 아래와 같다.
max(iterable, key=func, default=value)
iterable 자리에는 리스트, 튜플, 딕셔너리 등 반복 가능한 자료형이 들어간다.
key=func는 정렬 기준을 정의하는 함수이다. ⭐️ max() 함수는 iterable의 각 요소에 대해 func(요소)를 호출해 최댓값을 결정한다!!!
default에는 빈 iterable일 때 반환할 기본값이 들어간다.
간단하게 사용할 때는 아래와 같이 사용 가능하다.
nums = [1, 2, 3]
print(max(nums))
nums 리스트의 최댓값인 3이 출력된다.
key 파라미터를 사용해 원하는 기준에 따라 max 값을 찾을 수 있다.
animals = ["cat", "dog", "giraffe", "capybara"]
longest = max(words, key=len)
print(longest)
가장 긴 단어인 "capybara"가 출력된다.
max_value = max(mydict.values())
print(max_value)
dict.values()를 통해 딕셔너리의 모든 value를 리스트 형태로 반환받을 수 있다. 이걸 max()에 넘겨주면 최댓값을 바로 찾을 수 있다!
get() 함수를 사용해 value를 반환해야 한다!
mydict = {
"cat": 30,
"dog": 20,
"capybara": 10
}
max_animal = max(mydict, key=mydict.get)
print(max_animal)
맨 위에서도 말했듯이, max() 함수는 iterable의 각 요소에 대해 func(요소)를 호출해 최댓값을 결정한다.
이렇게 하면 max() 함수가 mydict의 각 key에 대해 get(key)를 호출하게 된다. 따라서 최대인 value를 가지는 key가 max_animal에 저장되어 "cat"이 출력된다.
🤔 values()도 딕셔너리의 value 값들을 리턴하는 함수니까 key=dict.values()라고 써도 되지 않을까? 라는 의문이 생겼다. 하지만 이렇게 하면 가장 큰 value 자체(숫자)만 반환하지 그 value이 어떤 key의 value인지는 출력하지 못한다.
max_key = max(mydict, key=mydict.get)
max_value = mydict[max_key]
print(max_key, max_value)
최댓값을 가지는 key를 먼저 찾은 후 그 key에 해당하는 value를 딕셔너리에서 가져온다.