더북(TheBook)

SortedDict는 표준 딕셔너리의 프로토콜을 지키므로, 앞에서 정의한 함수를 호출하면서 SortedDict 인스턴스를 표준 dict 위치에 사용해도 아무런 오류가 발생하지 않는다. 하지만 실행 결과는 요구 사항에 맞지 않는다.

sorted_ranks = SortedDict()
populate_ranks(votes, sorted_ranks)
print(sorted_ranks.data)
winner = get_winner(sorted_ranks)
print(winner)

>>>
{'otter': 1, 'fox': 2, 'polar bear': 3}
fox

여기서 문제는 get_winner의 구현이 populate_ranks의 삽입 순서에 맞게 딕셔너리를 이터레이션한다고 가정했다는 데 있다. 이 코드는 dict 대신 SortedDict를 사용하므로 이 가정은 더 이상 성립하지 않는다. 따라서 우승 동물로는 득표수가 1등인 동물이 아니라 알파벳 순서로 맨 앞에 오는 동물인 fox가 반환된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.