in을 사용하면 키가 있는 경우에는 키를 두 번 읽어야 하고, 키가 없는 경우에는 값을 한 번 대입해야 한다. 이 예제는 키가 존재하지 않을 때 맹목적으로 빈 리스트를 디폴트 값으로 대입할 수 있기 때문에 카운터 예제와는 다르다. 이중 대입문인 votes[key] = names = []는 키 대입을 두 줄이 아니라 한 줄로 처리한다. 디폴트 값으로 빈 리스트를 딕셔너리에 넣고 나면 참조를 통해 리스트 내용을 변경할 수 있으므로, append를 호출한 다음 리스트를 다시 딕셔너리에 대입할 필요는 없다.
딕셔너리 값이 리스트인 경우 KeyError 예외가 발생한다는 사실에 의존할 수도 있다. 이 접근 방법을 사용하면 키가 있을 때는 키를 한 번만 읽으면 되고, 키가 없을 때는 키를 한 번 읽고 값을 한 번 대입하면 된다. 이 방법은 in 조건문을 사용하는 경우보다 더 효율적이다.
try: names = votes[key] except KeyError: votes[key] = names = [] names.append(who)