더북(TheBook)

딕셔너리에서는 이런 식으로 키가 존재하면 그 값을 가져오고 존재하지 않으면 디폴트 값을 반환하는 흐름이 매우 자주 일어난다. 그래서 dict 내장 타입에는 이런 작업을 수행하는 get 메서드가 들어 있다. get의 두 번째 파라미터는 첫 번째 파라미터인 키가 딕셔너리에 들어 있지 않을 때 돌려줄 디폴트 값이다(아이템 32 “None을 반환하기보다는 예외를 발생시켜라”에서 이 방식이 좋은 인터페이스인지 살펴보라). 이 방식도 키를 한 번만 읽고 값을 한 번만 대입한다. 하지만 KeyError를 사용하는 예보다 코드가 훨씬 짧고, 예외 처리 비용을 피할 수 있다.

count = counters.get(key, 0)
counters[key] = count + 1