더북(TheBook)

다행히 collections 내장 모듈에 있는 defaultdict 클래스는 키가 없을 때 자동으로 디폴트 값을 저장해서 이런 용법을 간단히 처리할 수 있게 해준다. 여러분이 해야 할 일은 키가 없을 때 디폴트 값을 만들기 위해 호출할 함수를 제공하는 것뿐이다(Better way 38: ‘간단한 인터페이스의 경우 클래스 대신 함수를 받아라’의 예제 참고). 다음 코드는 defaultdict를 사용해 Visits 클래스를 다시 작성한 것이다.

from collections import defaultdict

class Visits:
    def __init__(self):
        self.data = defaultdict(set)

    def add(self, country, city):
        self.data[country].add(city)

visits = Visits()
visits.add('영국', '바스')
visits.add('영국', '런던')
print(visits.data)

>>>
defaultdict(<class 'set'>, {'영국': {'바스', '런던'}})
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.