python/자료 종류

딕셔너리

appmaster 2019. 7. 13. 16:58

딕셔너리란?

파이썬은 대응관계를 나타낼 수 있는 자료형을 가지고 있다. 요즘 사용하는 대부분의 언어도 대응관계를 나타내는 자료형을 갖고 있는데, 이를 연관 배열(Associative array) 또는 해시(Hash)라고 한다.

딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고 key를 통해 value를 얻는다. 이것이 바로 딕셔너리의 가장 큰 특징이다. 

 

 

딕셔너리를 만드는 방법

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

이것이 예이고 key와 value값은 이렇게된다.

key value
name pey
phone 123456789
birth 1118

 

 

 

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

1. 쌍 추가하는 방법

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

>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}

>>> a[3] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

 

 

2. 딕셔너리 요소 삭제하기

>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

 

 

 

딕셔너리 사용하는 방법

 

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

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

위 예에서 'pey'라는 key의 value를 얻기 위해 grade['pey']를 사용한 것처럼 어떤 key의 value를 얻기 위해서는 딕셔너리변수이름[key]를 사용한다.

 

 

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

먼저 딕셔너리에서 key는 고유한 값이므로 중복되는 key값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다. 다음 예에서 볼 수 있듯이 동일한 key가 2개 존재할 경우 1:'a', 쌍이 무시된다.

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

 

또한 key에는 리스트를 쓸 수 없다는 점이다. 하지만 튜플은 key로 쓸 수 있다. 딕셔너리에 key로 쓸수 있느냐 없느냐는 변하는 값인지 변하지 않는 값인지에 달려 있다. 리스트는 그 값이 변할 수 있기 때문에 key로 쓸수 없고 오류가 발생한다. value값은 변해도 상관이 없으므로 아무값이나 넣을 수 있다.

>>> a = {[1,2] : 'hi'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

 

 

딕셔너리 관련 함수들

 

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

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

그러므로 keys 객체를 리스트로 변환하려면 다음과 같이 하면 된다.

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

 

 

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

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

 

 

3. key, value 쌍 얻기(items)

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

 

 

4. key, value 쌍 모두 지우기(clear)

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

 

 

5. key로 value얻기(get)

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

 

 

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

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

 

'python > 자료 종류' 카테고리의 다른 글

튜플  (0) 2019.07.13
문자열 자료형  (0) 2019.07.13
리스트  (0) 2019.05.21
파이썬 산술연산자  (0) 2019.04.17
파이썬 터틀 입력하기  (0) 2019.04.17