더북(TheBook)

BETTER WAY 15 딕셔너리 삽입 순서에 의존할 때는 조심하라

파이썬 3.5 이전에는 딕셔너리에 대해 이터레이션을 수행하면 키를 임의의 순서로 돌려줬으며, 이터레이션 순서는 원소가 삽입된 순서와 일치하지 않았다. 예를 들어, 동물 이름과 새끼 동물 이름을 연결하는 딕셔너리를 정의하고 이를 출력해보자(Better way 75: ‘디버깅 출력에는 repr 문자열을 사용하라’ 참고).

# Python 3.5
baby_names = {
    'cat': 'kitten',
    'dog': 'puppy',
}
print(baby_names)

>>>    
{'dog': 'puppy', 'cat': 'kitten'}

딕셔너리를 만들 때는 키를 'cat', 'dog' 순서로 삽입했지만, 이 딕셔너리를 출력하면 역순인 'dog', 'cat' 순서로 출력됐다. 이런 동작은 의도한 바가 아니라 당황스럽고, 테스트 케이스에서 재현하기가 어려우며, 디버깅을 어렵게 하고, 특히 파이썬 초보자들에게 혼란을 준다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.