더북(TheBook)

이러한 문제를 해결하는 세 가지 방법이 있다. 첫 번째 방법은 ranks 딕셔너리가 어떤 특정 순서로 이터레이션된다고 가정하지 않고 get_winner 함수를 구현하는 것이다. 가장 보수적이고 가장 튼튼한 해법이다.

def get_winner(ranks):
    for name, rank in ranks.items():
        if rank == 1:
            return name
            
winner = get_winner(sorted_ranks)
print(winner)

>>>
otter

두 번째 방법은 함수 맨 앞에 ranks의 타입이 우리가 원하는 타입인지 검사하는 코드를 추가하는 것이다. ranks가 우리가 원하는 타입이 아니면 예외를 던진다. 이 해법은 보수적인 접근 방법보다 실행 성능이 더 좋을 것이다.

def get_winner(ranks):
    if not isinstance(ranks, dict):
        raise TypeError('dict 인스턴스가 필요합니다')
    return next(iter(ranks))
get_winner(sorted_ranks)

>>>
Traceback ...
TypeError: dict 인스턴스가 필요합니다
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.