본문 바로가기
Python/자료형

[Python] 딕셔너리 자료형

by 코딩잡아먹는자바 2023. 6. 28.
728x90

딕셔너리란?

사람은 누구든지 '이름' = '홍길동', '생일' = '몇 월 며칠' 등으로 구별할 수 있다. 파이썬은 이러한 대응 관계를 나타낼 수 있는 자료형을 가지고 있다. 그것이 바로 딕셔너리(Dictionary)라고 한다. 단어 그대로 해석하면 사전이라는 뜻이다. 즉 'people'이라는 단어에는 '사람', 'baseball'이라는 단어에 '야구'라는 뜻이 부합되듯이 딕셔너리는 Key 와 Value 값을 한 쌍으로 갖는 자료형이다. Key가 'baseball'이라면 Value는 '야구'가 될 것이다.

딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.

딕셔너리는 어떻게 만들까?

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

Key와 Value의 쌍 여러 개가 {}로 둘러싸여 있다. 각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.

dic = {'name':'kim', 'phone':'01012345678', 'birth':'0112'}
Key Value
name kim
phone 01012345678
birth 0112

 

딕셔너리 쌍 추가, 삭제하기

딕셔너리 쌍 추가하기

a = {1:'a'}
a[2] = 'b'

>>> print(a)
{1: 'a', 2: 'b'}

{1:'a'}딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각각 2와 'b'인 2:'b'라는 딕셔너리 쌍이 추가된다.

a['name'] = 'kim'

>>> print(a)
{1: 'a', 2: 'b', 'name':'kim'}

딕셔너리 a에 'name':'kim'이라는 쌍을 추가하였다.

a[3] = [1, 2, 3]

>>> print(a)
{1: 'a', 2: 'b', 'name': 'kim', 3: [1, 2, 3]}

Key는 3, Value는 [1, 2, 3]을 가지는 한 쌍이 또 추가되었다.

딕셔너리 요소 삭제하기

a = {1: 'a', 2: 'b', 'name': 'kim', 3: [1, 2, 3]}
del a[1] # key가 1인 key:value 쌍 삭제

>>> print(a)
{2: 'b', 'name': 'kim', 3: [1, 2, 3]}

del 함수를 사용해서 del a[key]처럼 입력하면 지정한 Key에 해당하는 {Key:Value}쌍이 삭제된다.

딕셔너리를 사용하는 방법

예를 들어 4명의 사람이 있다고 가정하고, 각자의 특기를 표현할 수 있는 좋은 방법에 대해서 생각해 보자. 리스트나 문자열로는 표현하기가 상당히 까다로울 것이다. 하지만 파이썬의 딕셔너리를 사용한다면 이 상황을 표현하기가 정말 쉬울 것이다.

{"김연아":"피겨스케이팅", "류현진":"야구", "박지성":"축구", "박태환":"수영"}

사람 이름과 특기를 한 쌍으로 하는 딕셔너리이다.

 

딕셔너리에서 Key 사용해 Value 얻기

grade = {'kim':100, 'choi':95}

>>> print(grade['kim'])
100

>>> print(grade['choi'])
95

위 에에서 'kim'이라는 Key의 Value 값을 얻기 위해 grade['kim']을 사용한 것 처럼 어떤 Key의 Value를 얻기 위해서는 '딕셔너리 변수 이름[Key]'를 사용하면 된다.

a = {1:'a', 2:'b'}

>>> print(a[1]) # Key가 1인 요소의 Value를 반환
a

>>> print(a[2]) # Key가 2인 요소의 Value를 반환
b

여기서 주의할 점은 딕셔너리 변수에서 [] 안의 숫자 1은 두 번째 요소를 뜻하는 것이 아니라 Key에 해당하는 1을 나타낸다. 딕셔너리는 리스트나 튜플에 있는 인덱싱 방법을 적용할 수 없다.

a = {'a':1, 'b':2}

>>> print(a['a'])
1

>>> print(a['b'])
2

 

 

딕셔너리 a는 a[Key]로 입력해서 Key에 해당하는 Value를 얻을 수 있다.

dic = {'name':'kim', 'phone':'01012345678', 'birth':'0112'}

>>> print(dic['name'])
kim

>>> print(dic['phone'])
01012345678

>>> print(dic['birth'])
0112

딕셔너리 만들 때 주의할 사항

딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다.

Key가 중복되었을 때 1개를 제외한 나머지 Key:Value 값이 모두 무시되는 이유는 동일한 Key가 존재하면 어떤 Key에 해당하는 Value를 불러야 할지 알 수 없기 때문이다.

a = {1:'a', 1:'b'}

>>> print(a)
{1: 'b'}

위 코드에서 볼 수 있듯이 동일한 Key가 2개 존재할 경우 1:'a' 쌍이 무시된다.

 

또 다른 주의해야 할 사항은 Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있다. 리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다.

a = {[1, 2] : 'hi'}

>>> print(a)
Traceback (most recent call last): # 오류 발생
  File " ", line 683, in <module>
    a = {[1, 2] : 'hi'}
        ^^^^^^^^^^^^^^^
TypeError: unhashable type: 'list'

 딕셔너리의 Key값으로 딕셔너리를 사용할 수 없음은 당연하다. 단 Value에는 변하는 값이든 변하지 않는 값이든 상관없이 아무 값이나 넣을 수 있다.

 

728x90

'Python > 자료형' 카테고리의 다른 글

[Python] 집합 자료형  (0) 2023.06.29
[Python] 딕셔너리 함수  (0) 2023.06.28
[Python] 튜플 자료형  (0) 2023.06.28
[Python] 리스트 함수(대표적)  (0) 2023.06.26
[Python] 리스트 수정과 삭제  (0) 2023.06.26