점프 투 파이썬 - 딕셔너리 자료형★
Language/Python

점프 투 파이썬 - 딕셔너리 자료형★

뉴비뉴 2019. 7. 8.

딕셔너리란?

사람은 누구든지 "이름" = "홍길동", "생일" = "몇월 며칠" 등으로 구별할 수 있다.

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

이것이 딕셔너리의 가장 큰 특징이다.

 

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

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

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

 

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

딕셔너리의 Key에는 정수 값도 들어올 수 있고, Value에는 문자열과 리스트도 넣을 수 있다.

 

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

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

>>> a[2] = 'b' !!! 와 같이 입력하면 a에 Key와 Value가 각각 2와 'b'인 디셔너리 쌍이 추가된다.

>>> a

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

 

삭제하기

>>> del a[1] !! del a[key]처럼 입력하면 지정한 Key에 해당하는 {key:value} 쌍이 삭제된다.

>>> a

{2: 'b'}

 

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

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

>>> grade['pey']

10

>>> grade['julliet']

99

 

리스트나 튜플, 문자열은 요솟값을 얻고자 할 때 인덱싱이나 슬라이싱 기법 중 하나를 사용했다.

하지만 딕셔너리는 단 한 가지 방법뿐이다. 바로 Key를 사용해서 Value를 구하는 방법이다.

 

딕셔너리 관련 함수들

Key 리스트 만들기(Keys)

>>> a = {'name':'pey', 'phone':'01044447777', 'birth':'1118'}

>>> a.keys()

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

 

3.0 이상 버전부터는 dict_keys 객체를 리스트로 변환하려면 아래와 같이 하면 된다.

>>> list(a.keys())

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

 

Value 리스트 만들기(values)

>>> a.values()

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

 

Key를 얻는 것과 마찬가지 방법으로 Value만 얻고 싶다면 Values 함수를 사용하면 된다.

 

Key, Value 쌍 얻기(items)

>>> a.items()

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

 

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

>>> a.clear()

>>> a

{}

빈 리스트 [], 빈 튜플 (), 빈 딕셔너리 {}

 

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'] 처럼 존재하지 않는 키로 값을 가져오려 할 경우 오류를 발생시키고,

a.get('nokey')는 None을 돌려준다는 차이가 있다.

 

*a.get('nokey') 처럼 사용하는게 좋다고 생각한다, 실제 서비스를 돌린다고 생각하면 A라는 키를 제거했다,

A의 키를 가져오는 값이 있는데 a['A'] 처럼 되어있다면 오류가 발생할 것이다. 하지만 a.get('A')를 사용했다면 None이라는 결과를 반환할 것이고, 개발 시에 그에 대응하는 if 문을 작성해두면 오류발생을 해결하는데 많은 도움이 될 것이다.

 

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

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

>>> 'name' in a

True

>>> 'email' in a

False

 

 

정리

-딕셔너리는 키와 값으로 이루어진 자료형이고, 키는 유일해야 하며 순서가 없다.

-키가 중복되면 중복된 키 중 하나만 사용하고 나머지는 버린다. 그런데 그 하나가 무엇일지는 정확히 알 수 없다.

댓글

💲 추천 글