딕셔너리에서는 이런 식으로 키가 존재하면 그 값을 가져오고 존재하지 않으면 디폴트 값을 반환하는 흐름이 꽤 자주 일어난다. 그래서 dict 내장 타입에는 이런 작업을 수행하는 get 메서드가 들어 있다. get의 두 번째 인자는 첫 번째 인자인 키가 딕셔너리에 들어 있지 않을 때 돌려줄 디폴트 값이다. 이 방식도 키를 한 번만 읽고 값을 한 번만 대입한다. 하지만 KeyError를 사용하는 예보다 코드가 훨씬 짧다.
count = counters.get(key, 0) counters[key] = count + 1
in 식과 KeyError를 사용하는 방식을 여러 방법으로 더 짧게 쓸 수도 있지만, 어떤 방법을 써도 대입을 중복 사용해야 하므로 코드 가독성이 떨어진다. 따라서 사용하지 않는 편이 좋다.
if key not in counters: counters[key] = 0 counters[key] += 1 if key in counters: counters[key] += 1 else: counters[key] = 1 try: counters[key] += 1 except KeyError: counters[key] = 1