강의로 돌아가기
-

items 순서가 궁금합니다.

잘했어요! 정답입니다. ^
2월은 28일이 있습니다.
1월은 31일이 있습니다.
4월은 30일이 있습니다.
5월은 31일이 있습니다.
3월은 31일이 있습니다.

이런 식으로 1~5까지 순차적으로 나오지 않는데, 무엇 때문일까요?
keys, values에서도 비슷한 현상이 있었던 듯 합니다.

작성중인 코드―dict3_2
1
2
3
4
5
days_in_month = {"1월":31, "2월":28, "3월":31, "4월":30, "5월":31}

for month, days in days_in_month.items():
#출력 형식은 아래 print함수를 참고하세요
    print("{}은 {}일이 있습니다.".format(month, days       ) )
2 개의 답변
정두식_

딕셔너리의 items 순서는 랜덤이라고 생각하시면 됩니다. 순서가 정해져 있지 않습니다.
딕셔너리가 hash테이블로 구성되어 있기 때문인데요.
아래 링크는 파이썬에서 딕셔너리가 어떻게 구성되어 있는지 알려주는 문서입니다. 잇시아님이라면 추억을 되돌리며 일독을 권합니다;
링크

  • -
    감사합니다! 즐거운 회상이 되었습니다.
    -―2017.08.18 11:24
이확영

python의 dictionary는 기본적으로 순서가 없습니다.
만약 dictionary를 순서대로 정렬하고 싶으면 아래와 같이 OrderedDict를 사용하시면 됩니다.

from collections import OrderedDict

days_in_month = {"1월":31, "2월":28, "3월":31, "4월":30, "5월":31}
ordered_days_in_month = OrderedDict(sorted(days_in_month.items()))

for month, days in ordered_days_in_month.items():
    print("{}은 {}일이 있습니다.".format(month, days))

참고: https://docs.python.org/3/library/collections.html#collections.OrderedDict

  • -
    감사합니다. 보면 볼수록 파워풀한 언어네요.
    -―2017.08.18 11:24
  • -
    오호라 ? 안그래도 정렬방법찾고있었는데 마침 댓글에 있네요!
    -―2017.08.18 11:24
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.