Program/파이썬

[Python] 사전(Dictionary)

사막여유 2023. 1. 4. 08:08
728x90

https://fastcampus.co.kr/courses/213915

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

 

 ' 리스트 ' 라고 하는 자료형은 인덱스로 여러 원소들을 구분했었지만

 ' 사전' 이라고 하는 자료형은 인덱스대신 Key-Value 라는 용어를 사용한다.

Key - Value를 사용하게 되면 순서가 아닌 의미가 있는 값을 통해서 데이터 접근이 가능하다. 

 

사전을 만드는 방법으로 예시를 들어보면

D = { 'John' : 0011, 'Maria' : 1234 } -> 이렇게 작성하고 실행하면 에러가 발생하는데 숫자 앞을 0으로 채우지 말라는 에러가 발생한다. 그러면 어떻게 해결 할 수 있을까?

해당 code를 숫자형에서 문자열 자료형으로 변형시켜주면 가능하다.

D = { 'John' : '0011', 'Maria' : '1234' }

그래서 예를들어 내가 Maria 에 해당하는 코드를 보고 싶다고 한다면 

D[ "Maria" ] 를 작성하고 실행하면 '1234' 라는 Value값을 도출해낼 수 있다. 

즉, Key를 Name으로 Value를 Code로 생각해서 작성한 것 이다.

 

그리고 리스트와 동일하게 인덱스 즉, Key와 Value를 추가할 수 있는데 이는

D['a'] = 3 과같은 방식으로 실행할 수 있다. 그러면 Key = 'a' , Value = 3 이라는 값이 사전에 추가된다.

만약 'a'라는 Key가 있는 상태에서 Value를 바꾸면 수정도 가능하다.

 

그런데 만약 D2 = { 'a' : 1 , 'a' : 2 , 'b' : 3 } 과같은 방식으로 같은 Key값을 넣어주면 어떤 결과값이 나오게 될까?

예상할 수 있듯이 순서대로 실행되어 나중에 추가한 값이 'a' Key값에 들어가게되어서

D2 = { 'a' : 2, 'b' : 3} 와 같은 결과가 나오게된다.

따라서! 사전( Dictionary ) 를 만들 때 Key는 중복이 있으면 절대절대 안된다! 

 

만약 사전 Key값에 리스트를 넣고싶다고한다면 가능할까?

D [[1.2]] = 3 과같이 Key값 안에 리스트를 넣으면 에러가 발생한다!

위 결과값을 보면 알 수 있듯이 Key값은 Mutable 데이터를 사용하면 안되고 Immutable 데이터를 사용해야한다.
( Int, double, String, Tuple ... )

Key값을 '주소' 에 빗대어 설명해 주셨는데 주소가 가변이라고 한다면 찾을때나 사용할때 굉장히 불편하고 신뢰성이 떨어질 수 있기 때문.

 

사전 관련 함수

 

D = { 'name' : 'kim', 'phone' : '01012345678' , 'birth' : '1234' }

 * 사전의 모든 key 값들 보기 ( keys() )

 * 사전의 모든 value들 보기 ( values() )

 * 사전의 모든 key, value 쌍 보기 ( items() )

 * 사전의 원소 제거하기 ( pop() )
   D.pop('name')  → D = { 'phone' : '01012345678' , 'birth' : '1234' }

 

Sequence 관련 함수

* ' in ' 이라는 operator는 모든 연속형 데이터 타입에 사용할 수 있다.
( 리스트, 튜플, 집합, 문자열, 사전 ... )

* 사전의 경우에는 key값을 대상으로 하고 리스트, 튜플, 집합, 문자열에 대해서는 해당 원소가 존재하는지 찾아
  True / False를 알려준다.

* D = { 'name' : 'kim', 'phone' : '01012345678' , 'birth' : '1234' }
   "phone" in D → True
   D.pop('phone') → "phone" in D → False

만약 Key가 아닌 Value값을 대상으로 in 을 사용하면 없다는 False가 도출된다.
* D = { 'name' : 'kim', 'phone' : '01012345678' , 'birth' : '1234' }
  "kim" in D → False

* L = [1,2,3]
   t = (4,5,6)
   s = {7,8,9}
   st = "Hello World"

   1 in L → True
   3 in t → False
   8 in s → True
   'A' in st → False

728x90

'Program > 파이썬' 카테고리의 다른 글

[Python] 반복문 ( for )  (0) 2023.01.07
[Python] 반복문 ( While )  (0) 2023.01.07
[Python] 조건문(If)  (0) 2023.01.06
[Python] 집합(Set)  (0) 2023.01.03
[Python] 리스트(List ), 튜플(Tuple)  (0) 2023.01.02