티스토리 뷰
#7 파이썬 chapter 7. 딕셔너리 자료형
딕셔너리란?
사람은 누구든지 '이름' = '홍길동', '생일' = ' 몇 월 며칠' 등으로 구별할 수 있다. 파이썬은 영리하게도 이러한 대응 관계를 나타낼 수 있는 자료형을 가지고 있다. 요즘 사용하는 대부분의 언어도 이러한 대응 관계를 나타내는 자료형을 갖고 있는데, 이를 연관 배열 또는 해시라고 한다. 파이썬에서는 이러한 자료형을 딕셔너리 라고 하는데, 단어 그대로 해석하면 사전이라는 뜻이다. 즉 'people' 이라는 단어에 '사람', 'baseball' 이라는 단어에 '야구' 라는 뜻이 부합되듯이 딕셔너리는 Key 와 Value를 한 쌍으로 갖는 자료형이다.
딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다. 이것이 바로 딕셔너리의 가장 큰 특징이다. baseball 이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 baseball 이라는 단어가 있는 곳만 펼쳐 보는 것이다.
1. 딕셔너리는 어떻게 만들까?
다음 딕셔너리 예를 살펴보자.
dic = {'name' : 'pey', 'phone' : 01199993323', 'birth' : '1118'}
위에서 Key 는 name, phone, birth 이고 각각의 Key 에 해당하는 Value 는 pey, 0119993323,1128 이 된다.
a = {1 : 'hi'}
a = {'a' : [1,2,3]}
위처럼 Key로 정수 값 1, Value 로 문자열 hi 를 사용한 예와 Value 에 리스트도 넣을 수 있다.
2. 딕셔너리 쌍 추가, 삭제하기
딕셔너리의 쌍을 추가하는 방법과 삭제하는 방법을 알아보자.
1) 딕셔너리 쌍 추가하기
a = {1: 'a'}
a[2] = 'b'
a
{1: 'a', 2: 'b'}
위와 같이 {1: 'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 key 와 value 가 각각 2와 'b' 인 2:'b' 라는 딕셔너리 쌍이 추가된다.
a['name'] = 'pey'
a
{1: 'a', 2: 'b', 'name': 'pey'}
딕셔너리 a에 'name': 'pey' 라는 쌍이 추가되었다.
a[3] = [1, 2, 3]
a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3] }
key는 3 value는 [1, 2, 3] 을 가지는 한 쌍이 또 추가되었다.
2) 딕셔너리 요소 삭제하기
del a[1]
a
{'name': 'pey', 3 : [1, 2, 3], 2: 'b'}
위 예제는 딕셔너리 요소를 지우는 방법을 보여준다. del 함수를 사용해서 del a[Key] 처럼 입력하면 지정한 Key 의 쌍이 삭제된다.
2. 딕셔너리를 사용하는 방법
' 딕셔너리는 대체 어떤 것을 표현할 때 사용할까?' 라는 의문이 들 것이다. 예를 들어 4명의 사람이 있다고 가정하고, 각자의 특기를 표현할 수 있는 좋은 방법에 대해서 생각해 보자. 리스트나 문자열로는 표현하기가 까다로울 것이다. 하지만 파이썬의 딕셔너리로는 표현하기가 정말 쉽다. 다음의 예를 보자.
{"김연아":"피겨스케이팅", "류현진":"야구", "박지성":"축구","귀도":"파이썬"}
위처럼 사람 이름과 특기를 한 쌍으로 하는 딕셔너리이다.
딕셔너리를 제대로 활용하기 위해 다음으로 넘어가보자.
1) 딕셔너리에서 Key 사용해 Value 얻기
grade = {'pey':10, 'julliet':99}
grade{'pey'}
10
grade{'julliet'}
99
이전에 배웠던 리스트나 튜플, 문자열은 요솟값을 얻기 위해 인덱싱이나 슬라이싱 기법중 하나를 사용했었다. 하지만 딕셔너리는 단 한가지 방법뿐이다. Key 를 사용해 Value를 구하는 방법이다.
다른 예를 들어보자.
a = {1:'a', 2:'b'}
a[1]
'a'
b[1]
'b'
위 처럼 먼저 a 변수에 {1:'a', 2:'b'} 딕셔너리를 대입하였다. 위에서 볼 수 있듯이 a[1]은 'a' 값을 돌려준다. 여기서 a[1]이 의미하는 것은 리스트나 튜플의 a[1]과는 전혀 다르다. 딕셔너리 변수에서 [] 안이 숫자 1은 두 번째 요소를 말하는 것이 아니라 key에 해당하는 1을 나타낸다. 따라서 딕셔너리는 리스트나 튜플에 있는 인덱싱 방법을 쓸 수 없다. 이 점을 꼭 알고 가자.
다음 예제를 살펴보자.
a = {'a':1, 'b':2}
a['a']
1
a['b']
2
위 처럼 a['a'], a['b'] 처럼 Key를 사용해서 Value 를 얻을 수 있다.
2) 딕셔너리 만들 때 주의할 사항
딕셔너리에서 Key는 고유한 값이라서 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들은 모두 무시된다는 점을 주의해야한다. 아래 예처럼 동일한 Key가 2개 존재할 경우 1:'a' 쌍이 무시된다.
a = {1:'a', 1:'b'}
a
{1:'b'} <- 1:'a' 쌍이 무시됨
이처럼 Key가 중복되었을 때 1개를 제외한 나머지 Key:Value 값이 모두 무시된다. 그 이유는 Key를 통해서 Value 를 얻는 딕셔너리의 특징에서 비롯된다. 즉 동일한 Key가 존재하면 어떤 Key에 해당하는 Value를 불러야 할지 알 수 없기 때문이다. 또 한가지 중요한 사항은 Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key 가 변하는 값인지 변하지 않는 값인지에 달려있다. 리스트는 튜플과 달리 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다. 단 Value에는 변하는 값이든 변하지 않든 상관없이 아무 값이나 넣을 수 있다.
출처 : 점프 투 파이썬
'파이썬의 기초' 카테고리의 다른 글
파이썬의 기초 ( 집합 자료형) (0) | 2021.03.09 |
---|---|
파이썬의 기초 (딕셔너리 관련 함수) (0) | 2021.03.08 |
파이썬의 기초 ( 튜플 자료형) (0) | 2021.03.07 |
파이썬의 기초 (리스트 자료형) (0) | 2021.03.06 |
파이썬의 기초(문자열 관련 함수) (0) | 2021.03.05 |