1248861491794189
잇시아
  • 2016.3.21 18:11
  • 조회수 276
  • 답변수 2
1248861491794189
잇시아
  • 2016.3.21 18:11
  • 조회수 276
  • 답변수 2

items 순서가 궁금합니다.

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

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

dict3_2
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 답변

  • Gscxhpxkg5i74t30rimh
    정두식
    • 2016.3.21 19:37

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

    • 감사합니다! 즐거운 회상이 되었습니다. -잇시아
      2016.3.21 22:34
  • Dbucdlkpqyn7yg1hgsny
    이확영
    • 2016.3.21 20:15

    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

    • 감사합니다. 보면 볼수록 파워풀한 언어네요. -잇시아
      2016.3.21 22:38
    • 오호라 ? 안그래도 정렬방법찾고있었는데 마침 댓글에 있네요!-lXsTiTCh
      2016.8.19 13:21

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.