본문 바로가기

💻프로그래밍/python

[파이썬 독학] 5. 딕셔너리(dictionary)

반응형

1. 딕셔너리(dictionary)란?

딕셔너리데이터를 Key와 value가 대응되는 형태로 하나의 변수에 선언하는 자료형이다. 저번 시간에 정리한 리스트, 튜플 그리고 딕셔너리같이 여러 개의 값을 저장하는 자료형을 '컨테이너'라고 한다. 딕셔너리는 많이 사용되는 자료형 중 하나로, 데이터를 구조적으로 다룰 수 있다는 장점이 있다.

 

 

 

 

2. 딕셔너리 선언 방법과 주의사항

 

딕셔너리는 중괄호{ }를 이용하여 { key:vale } 형태로 선언해주면 된다. 또한 각각의 쌍은 콤마(,)로 구분해준다.

key에는 변하지 않는 값을 써주며 중복이 불가하다. 반면 value에는 변하는 값과 변하지 않는 값 모두를 사용할 수 있다. 위의 예시를 보자면, 변수 출석부에 1번은 '짱구', 2번은'철수' 3번에는 '맹구'의 값이 각각 쌍을 이루어 선언된 것이다.

 

또한 하나의 key에 value를 여러개 넣고 싶다면 리스트를 이용하여 적어줄 수도 있다.

 

 

 

※ 주의사항

위에서도 언급했듯, key는 고유한 값이므로, 중복되는 key를 사용할 수 없다. 따라서 이미 사용 중인 key에 중복되는 key를 설정하게 되면 그 전의 key가 무시되어버린다. 그 이유는 딕셔너리는 key를 통해서 value값을 추출해내는 특성이 있는데, 동일한 key가 존재하게 되면 추출할 때 어떤 value를 추출해야 하는지 알 수 없기 때문이다. 

 

위의 예처럼 어떤 반의 출석부에 1번'짱구', 1번'철수'가 있게 되면, 선생님이 1번이라고 불렀을 때 둘 중 누가 대답해야 하는지 혼란이 생긴다. 때문에 key가 중복되지 않게 선언하는 것이 중요하다.

 

 

 

딕셔너리를 사용할 때 또 한 가지 주의할 점은 key에는 리스트 형태가 올 수 없다는 것이다. 하지만 튜플은 key로 사용할 수 있다. 그 이유는 저번 시간에 정리했듯 리스트는 그 값을 수정할 수 있지만 튜플은 그 값이 한번 선언되면 변경될 수 없기 때문이다. 

 

key를 리스트형태로 선언 했을때 발생하는 오류

TypeError: unhashable type : 'list'

 

 

key를 튜플 형태로 선언했을때는 오류가 발생하지 않는다.

 

 

 

 

3. 딕셔너리 사용 방법

1) value 출력 방법(3가지)

 

# 딕셔너리 value 출력하기 1 : [ ] 

리스트와 튜플은 인덱싱이나 슬라이싱을 이용하여 그 주소에 있는 값을 추출해왔다면, 딕셔너리는 key를 이용하여 그에 해당하는 value를 얻는 방식으로 값을 출력한다.

 

value를 추출하는 방법은 2가지가 있는데 그중 첫 번째는 대괄호[ ]를 이용하는 것이다. 변수[key]를 적어주면 그 key에 대응하는 value를 찾을 수 있다. 예를 들어, 학점을 딕셔너리 형태로 A와 B학점에 해당하는 과목들을 대응시켰다. 그 뒤 학점['A'] 즉, 학점 중에서 'A'를 맞은 과목들을 출력했을 때 그에 해당되는 값인 ['수학', '영어']가 출력됨을 알 수 있다. 

 

※주의사항

먼저 변수 di에 {1: 'a', 2:'b'} 딕셔너리를 선언한 다음, di[1]을 출력해보면 'a'가 출력된다. 여기에서 di[1]이 의미하는 것은 리스트나 튜플에서 항상 해왔던 인덱싱이나 슬라이싱의 [1]이 아니다. 즉, 1번째에 있는 값을 출력해라 라는 의미가 아니라는 것을 주의해야 한다. 딕셔너리에서 [ ] 안의 숫자는 key에 해당하는 숫자일 뿐이다. 

 

 

 

# 딕셔너리 value 출력하기 2 : .get( ) 

value를 출력하는 두 번째 방법은 변수.get( )을 이용하는 것이다. 소괄호( ) 안에는 내가 추출하고 싶은 value에 대응하는 key를 적어주면 된다.

 

 

 

# 딕셔너리에 있는 모든 value값 가져오기 : .values( ) 

 

.values( )를 이용하면 딕셔너리에 포함된 모든 value값을 출력할 수 있다.

 

 

 

2) 딕셔너리에 있는 모든 key값 가져오기 : .keys( ) 

 

 

 

 

3) 딕셔너리 쌍 추가하기

 

딕셔너리에 쌍을 추가하고 싶다면 변수[key] = value 형태로 선언해주면 된다. 만약 이때 내가 새로 추가할 key를 이미 사용 중이었을 때는 그 key의 value가 나중에 추가된 value로 업데이트된다. 

 

 

 

4) 딕셔너리 요소 삭제하기 : del 

 

딕셔너리에 있는 특정 요소를 삭제할 때는 del를 이용하면 된다. del 변수[key]를 입력하면 그 key에 해당하는 value가 삭제된다.

 

 

 

5) 딕셔너리 values 수정하기 

 

 

딕셔너리에 있는 특정 부분을 수정하고 싶다면 변수 [key] = 변경할 value 를 입력해주면 된다. 위의 예시를 보면, 학점['B']에 해당되는 과목을 '과학'으로 수정하고 싶다. 따라서 학점['B'] = '과학'을 입력하고 다시 변수 '학점'을 출력해보면 학점 B에 해당되는 value가 수정되었음을 알 수 있다.

 

 

 

6) 딕셔너리에 해당 key 값이 있는지 확인 : in - True/ False 

 

딕셔너리에 해당 key가 있을 때 in을 사용하여 알아볼 수 있다. key in 변수 의 형태로 입력한 다음 출력해 봤을 때, 해당 key가 딕셔너리에 있다면 True, 없다면 False를 출력한다. 여기서 주의할 점은 values의 값을 확인하는 것은 해당되지 않는다는 점이다. 

 

 

 

7) 딕셔너리의 key와 value를 쌍으로 출력할 때 : .items( ) 

 

 

 

 

8) 딕셔너리의 모든 값을 지우고 싶을 때 : .clear( ) 

 

 

clear( )함수는 딕셔너리 안의 모든 요소들을 삭제한다. 

 

 

 

반응형