본문 바로가기

Python

[Python] 자료형 - 딕셔너리(Dictionary)

딕셔너리란

Key, Value로 이루어져있는 자료형을 파이썬에서 딕셔너리라고 한다. Hash와 동일한 개념이다.

Key, Value 쌍으로 이루어져 있기 때문에 전체 데이터를 탐색하지 않고 Key와 일치하는 Value를 바로 검색하여 얻을 수 있다는 장점이 있다.

Key로 검색을 하기 때문에 하나의 딕셔너리 안에서 Key는 중복될 수 없다.

리스트와 달리 딕셔너리 내에서 요소의 순서는 보장되지 않는다.

딕셔너리 생성

다음과 같은 패턴으로 데이터를 생성한다.

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

실제 예는 다음과 같다.

dic = {1:'Jason', 2:'Brian', 3:'Jay', 4:'Billy'}

각 Key는 1,2,3,4이며 Value는 'Jason', 'Brian', 'Jay', 'Billy'이다.

'Jason' 을 접근하기 위해서는 'Jason'의 Key인 1로 딕셔너리에서 검색한다.

dic[1] #'Jason'

딕셔너리 요소 추가

요소를 추가하는 방법은 다음과 같다.

#딕셔너리 생성
a = {1:'a'}

#새로운 요소 추가 {2:'b'}
a[2] = 'b'
print(a) #{1:'a', 2:'b'}

딕셔너리 요소 수정

#Key가 1인 요소의 Value 수정
a[1] = 'z'
print(a) #{1:'z', 2:'b'}

딕셔너리 요소 삭제

del API를 사용하여 요소를 삭제할 수 있다.

#Key가 1인 요소 삭제
del a[1]
print(a) #{2:'b'}

자주쓰는 API

Keys

딕셔너리의 Key만 추출하는 함수 파이썬 2.7x에서는 리스트로 반환되지만 3.x부터는 dict_keys라는 자료형으로 반환된다.

3.x에서 리스트로 얻고 싶다면 리스트로 캐스팅이 필요하다. (ex → list(a.keys()))

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

a.keys() #dict_keys(['name', 'phone', 'birth'])

Values

딕셔너리의 Value만 추출하는 함수 Keys와 마찬가지로 파이썬 버전에 따라 반환이 다르다.

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

Items

Key, Value가 튜플로 변환되기 때문에 Key, Value의 수정은 불가능하다.

딕셔너리 안 요소를 튜플로 묶은 dict_items를 반환한다.

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

Clear

딕셔너리 안의 모든 요소를 삭제한다.

a.clear()

Get

직접 Key로 접근하는 것과의 차이점은 해당 Key가 없는 경우 get 함수는 None을 반환하기 때문에 오류가 발생하지 않는다.또한 Key가 없는 경우 반환할 기본값(default)을 설정할 수 있다.

그렇기 때문에 좀 더 안정적인 코드 수행을 할 수 있다.

get(Key)로 Value를 얻을 수 있다.

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

print(a.get('nokey'))    #None

print(a['nokey'])    #에러발생
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# KeyError: 'nokey'

#기본값 설정
print(a.get('nokey', '0000'))    #0000

In

딕셔너리 안에 해당 Key가 있는지 확인할 수 있다.

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

'name' in a     #True
'email' in a    #False

'Python' 카테고리의 다른 글

[Python] 자료형 - 집합(Set)  (0) 2021.10.07
[Python] 자료형 - 리스트  (0) 2021.09.29
[Python] 자료형 - 문자  (0) 2021.09.21
[Python] 자료형 - 숫자  (0) 2021.09.09
[Python] 변수 사용하기  (0) 2021.09.07