본문 바로가기
Python

[Python]자료형: 딕셔너리 자료형

by 열지희공 2022. 1. 15.

<딕셔너리(Dictionary)>

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

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

Key와 Value의 쌍 여러 개가 {}로 둘러싸여 있다.

각각의 요소는 Key: Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.

Key에는 변하지 않는 값을 사용하고, Value에는 변하는 값과 변하지 않는 값을 모두 사용할 수 있다.

>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

이런식으로 사용한다.

 

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

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
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

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

 

딕셔너리를 사용하는 방법

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

>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99

리스트나 튜플, 문자열은 요솟값을 얻고자 할 때 인덱싱이나 슬라이싱 기법 중 하나를 사용했지만 딕셔너리는 Key를 사용해서 Value를 구하는 단 한가지 방법뿐이다. 어떤 Key의 Value를 얻기 위해서는 '딕셔너리 변수 이름[Key]'를 사용한다. 

 

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

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

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

1이라는 Key 값이 중복으로 사용되어서 1:'a' 쌍이 무시되었다.

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

 

또 한가지 주의해야 할 사항은 Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려있다. 리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다. 단, Value에는 변하는 값이든 변하지 않는 값이든 상관없이 아무 값이나 넣을 수 있다.

 

딕셔너리 관련 함수

1. Key 리스트 만들기(keys)

>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])

a.keys()는 딕셔너리 a의 Key만을 모아서 dict_keys 객체를 돌려준다.

dict_keys 객체는 리스트를 사용하는 것과 차이가 없지만, 리스트 고유의 append, insert, pop, remove, sort 함수는 수행할 수 없다. 

dict_keys 객체를 리스트로 변환하려면 다음과 같이 하면 된다.

>>> list(a.keys())
['name', 'phone', 'birth']

2. Value 리스트 만들기(values)

>>> a.values()
dict_values(['pey', '0119993323', '1118'])

Value만 얻고 싶다면 values 함수를 사용하면 된다. values 함수를 호출하면 dict_values 객체를 돌려준다.

3. Key, Value 쌍 얻기(items)

>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

item 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다. dict_values 객체와 dict_items 객체와 마찬가지로 리스트를 사용하는 것과 동일하게 사용할 수 있다.

4. Key: Value 쌍 모두 지우기(clear)

>>> a.clear()
>>> a
{}

clear 함수는 딕셔너리 안의 모든 요소를 삭제한다. 빈 딕셔너리는 {}로 표현한다.

5. Key로 Value 얻기(get)

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'

get(x) 함수는 x라는 Key에 대응되는 Value를 돌려준다. a.get('name')은 a['name']을 사용했을 때와 동일한 결과값을 돌려받는다. 

다만 a['nokey']처럼 존재하지 않는 키(nokey)로 값을 가져오려고 할 경우 a['nokey']는 Key 오류를 발생시키고 a.get('nokey')는 None을 돌려준다는 차이가 있다.

딕셔너리 안에 찾으려는 Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 편리하다.

>>> a.get('foo', 'bar')
'bar'

6. 해당 Key가 딕셔너리 안에 있는지 조사하기(in)

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False

'name'문자열은 a딕셔너리의 Key 중 하나이다. 따라서 'name' in a를 호출하면 참(True)을 돌려준다. 반대로 'email'은 a딕셔너리 안에 존재하지 않는 Key이므로 거짓(False)를 돌려준다. 

 

<출처>

https://wikidocs.net/16

 

02-5 딕셔너리 자료형

[TOC] ## 딕셔너리란? 사람은 누구든지

wikidocs.net

 

'Python' 카테고리의 다른 글

[Python]사용자 입력과 출력  (0) 2022.01.19
[Python]클래스  (0) 2022.01.16
[Python]자료형: 리스트 자료형, 튜플 자료형  (0) 2022.01.15
[Python] 웹 크롤링  (0) 2022.01.14
[Python] BeautifulSoup 라이브러리  (0) 2022.01.14