더북(TheBook)

딕셔너리에서는 이런 식으로 키가 존재하면 그 값을 가져오고 존재하지 않으면 디폴트 값을 반환하는 흐름이 꽤 자주 일어난다. 그래서 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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.