더북(TheBook)

자, 그런데 프로그램의 요구 사항이 변경됐다고 상상해보자. UI 요소에서 결과를 보여줄 때 등수가 아니라 알파벳순으로 표시해야 한다. 이 경우에는 collections.abc 모듈을 사용해 딕셔너리와 비슷하지만 내용을 알파벳 순서대로 이터레이션해주는 클래스를 새로 정의할 수 있다.

from collections.abc import MutableMapping

class SortedDict(MutableMapping):
    def __init__(self):
        self.data = {}
        
    def __getitem__(self, key):
        return self.data[key]
        
    def __setitem__(self, key, value):
        self.data[key] = value
        
    def __delitem__(self, key):
        del self.data[key]
        
    def __iter__(self):
        keys = list(self.data.keys())
        keys.sort()
        for key in keys:
            yield key
            
    def __len__(self):
        return len(self.data)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.