이러한 문제를 해결하는 세 가지 방법이 있다. 첫 번째 방법은 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 인스턴스가 필요합니다
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.