대응 관계를 나타내는 자료형을 연관 배열(Associative array) 또는 해시(Hash)라고 한다.

 

파이썬에서는 이러한 자료형을 딕셔너리(Dictionary)라고 하는데, 딕셔너리는 KeyValue라는 것을 한 쌍으로 갖는 자료형이다.

 

딕셔너리의 가장 큰 특징은 리스트나 튜플처럼 순차적으로(sequential) 해당 요소값을 구하지 않고 Key를 통해 Value를 얻는다.

 

사용법

>>> dic = {'name':'Enliven', 'phone':'01012341234', 'birth': '1210', 'etc': [1,2,3] }

 

추가하기

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

>>> a[2] = 'b'

>>> a

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

 

삭제하기

>>> del a[2]

>>> a

{1: 'a'}

 

Key는 중복하여 사용하면 안된다!

 

딕셔너리 관련 함수들

Key 리스트 만들기(keys)

>>> a =  {'name':'Enliven', 'phone':'01012341234', 'birth': '1210'}

>>> a.keys()

dict_keys(['name', 'phone', 'birth'])

 a.keys()는 딕셔너리 aKey만을 모아서 dict_keys라는 객체를 리턴한다.

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

 

>>> for k in a.keys():

... print(k)

...

phone

birth

name


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

>>> list(a.keys())

['phone', 'birth', 'name']

 

Value 리스트 만들기(values)

>>> a.values()

dict_values(['pey', '0119993323', '1118'])

Key를 얻는 것과 마찬가지 방법으로 Value만 얻고 싶다면 a.values()처럼 values 함수를 사용하면 된다. values 함수를 호출하면 dict_values 객체가 리턴되는데, dict_values 객체 역시 dict_keys 객체와 마찬가지로 리스트를 사용하는 것과 동일하게 사용하면 된다.

 

Key, Value 쌍 얻기(items)

>>> a.items()

dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

items 함수는 keyvalue의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.

 

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

>>> a.clear()

>>> a

{}

clear() 함수는 딕셔너리 안의 모든 요소를 삭제한다. 빈 리스트를 [ ], 빈 튜플을 ()로 표현하는 것과 마찬가지로 빈 딕셔너리도 { }로 표현한다.

 

KeyValue얻기(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을 리턴한다는 차이가 있다. 어떤것을 사용할지는 여러분의 선택이다.

>>> a.get('nokey')

>>> a['nokey']

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 'nokey'

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

 

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

'bar'

a 딕셔너리에는 'foo'에 해당하는 값이 없다. 따라서 디폴트 값인 'bar'를 리턴한다.

 

해당 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)을 리턴하게 된다.

'Programming > Python' 카테고리의 다른 글

if-elif-else 문  (0) 2017.05.07
자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07
자료형(3) - 리스트  (0) 2017.05.07
자료형(2) - 문자형  (0) 2017.05.07

+ Recent posts