SortedDict는 표준 딕셔너리의 프로토콜을 지키기 때문에, 앞에서 정의한 함수를 호출하면서 SortedDict 인스턴스를 표준 dict 위치에 사용해도 아무 오류가 발생하지 않는다. 하지만 실행 결과는 요구사항에 맞지 않는다.
sorted_ranks = SortedDict()
populate_ranks(votes, sorted_ranks)
print(sorted_ranks.data)
winner = get_winner(sorted_ranks)
print(winner)
>>>
{'수달': 1, '여우': 2, '북극곰': 3}
북극곰
여기서 문제는 get_winner의 구현이 populate_ranks의 삽입 순서에 맞게 딕셔너리를 이터레이션한다고 가정했다는 데 있다. 이 코드는 dict 대신 SortedDict를 사용하므로 이 가정은 더 이상 성립하지 않는다. 따라서 우승 동물로는 득표수가 1등인 동물이 아니라 가나다 순서(정확히는 유니코드 코드포인트의 순서)로 맨 앞에 오는 동물인 북극곰이 반환된다.