[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을 공부 해야겠다.
Author And Source
이 문제에 관하여([Python] Dictionary 내 Data 순서 보존), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dangolzip/Python-Dictionary-내-Data-순서-보존저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)