[Python] Dictionary 내 Data 순서 보존

최근에 코딩테스트의 문제를 풀며 Python3의 Dictionary 자료형을 사용했었는데, 이후 면접에서 관련 질문을 받게 되었다.

그 때 작성했던 코드의 경우 Dictionary에 데이터를 삽입하고 dictionary.items() - key,value를 각각 뽑아내는 형태였다.
담당자분께서 python의 dictionary의 순서가 원래 보존이 되는지 물어보셨고, 같은 코드를 python2에서 실행해도 돌아가는지 여쭤보셨다.

요즘 계속 python3.7를 사용해서 개발을 하거나 자료를 만들다 보니
원래 dictionary 자료형 순서 보존이 안되나...? 당황당황당..

면접이 끝나고 이 부분이 궁금하여 따로 서치해 본 결과를 기록하고자 작성한다.



python 3.7 공식문서를 확인하면 dict 객체의 삽입 순서 보존 특성을 공식적으로 선언했다고 표기되어있다.

Make it so. "Dict keeps insertion order" is the ruling. Thanks!
: 삽입 순서를 보존한다.

실제로 코드를 작성 후 결과를 확인해보면 다음과 같다.

dict = {"a":1,"b":2,"c":3,"d":4}
print(dict)

# python2.7 출력 결과
{'a': 1, 'c': 3, 'b': 2, 'd': 4}

# python3.8 출력 결과
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

애시당초 dictionary는 key와 value가 매치되어 있는 자료형이며 자료의 순서가 중요하지 않기 때문에, 기존 ~python3.5 버전까지는 dictionary의 순서가 보존되지 않았다. 서치해보니 3.6에도 순서를 보존하는 기능이 추가된 것 같지만, 공식적으로 업데이트 된 것은 3.7으로 보인다.

python3.6 이전 버전에서 dictionary의 순서를 보존하거나 정렬을 하고자 할 경우 OrderdDict 를 사용하면 된다.

다음 번에는 Collections 모듈의 OrderedDict을 공부 해야겠다.

좋은 웹페이지 즐겨찾기