개발자 블로그

[윤성우의 열혈 파이썬 중급편] - 8. dict의 생성과 looping 기술 본문

파이썬/윤성우의 열혈 파이썬 중급편

[윤성우의 열혈 파이썬 중급편] - 8. dict의 생성과 looping 기술

hayongwoon 2022. 4. 28. 16:20

dict 다양한 생성 방법

dict의 생성 방법

위 코드를 보면 다양한 방법으로 딕셔너리를 생성할 수 있는 것을 확인할 수 있다. 원래 딕셔너리와 같은 성격의 저장소는 저장 순서를 보장하지 않았지만, 버전 3.7부터 파이썬은 저장순서를 보장하고 있다고 한다. 

 

d4의 경우 zip 함수를 사용하여 딕셔너리를 만들었는데, zip함수는 순차적으로 값을 뽑아 튜플 형태로 반환해주는 함수이다. 안에 들어가는 객체(리스트, 문자열, 튜플) iterable 객체가 들어가는 것을 볼 수 있다. 여튼 zip함수는 같은 위치에 있는 값들을 조합해서 튜플을 만들어 낸다. 그리고 셋 이상의 값들을 조합하는 것도 가능하다!

 

 

딕셔너리 루핑 테크닉

  • dict.keys()          # 딕셔너리의 키들만 참조하고자 할 때
  • dict.values()       # 딕셔너리의 값들만 참조하고자 할 때
  • dict.items()        # 딕셔너리의 키와 값을 튜플 형태로 참조하고자 할 때

위 세가지 메소드가 반환하는 것을 '뷰(view) 객체'라고 한다. 뷰 객체도 iterable객체로 for loop을 통해 값을 하나 씩 참조할 수 있다!

세번째 items() 메소드는 튜플 형태로 값을 반환한다고 했는데, 튜플 언패킹으로 값을 변수에 할당할 수도 있다!

 

items 뷰 객체의 언패킹

 

뷰객체

뷰객체는 단순히 키와 벨류를 가져와 사용되는 것 뿐 아니라 현재 딕셔너리의 상태를 그대로 반영한다는 특징이 있다. 무슨 의미인지 예제를 통해 확인해보자!

처음 결과 값과 두번째 for loop의 결과값을 보면 vo에 참조한 뷰객체도 함께 수정된 값을 확인할 수 있다. 이 말은 뷰객체가 말그대로 딕셔너리의 값을 '바라보고(view)' 있기 때문에 가능한 것이다!

 

그리고 딕셔너리도 리스트 컴프리헨션과 같이 똑같이 컴프리헨션으로 표현식을 사용할 수 있는데, 필요에 따라 유연하게 쓸 수 있도록 연습하고 기억하자!