[Python 기초] 파이썬 자료형 - 딕셔너리(Dictionary)

업데이트:

개요

jpg


1. 딕셔너리(Dictionary) 자료형

파이썬에서 대표적으로 유용한 자료형이 바로 이 딕셔너리인 것 같다. 형태는 다음과 같다. {Key1 : Value1, Key2 : Value2, Key3 : Value3, ...}

key값에 대응되는 Value가 쌍을 이루는 형태이다.

dict_data = {'name':'YG_analyst', 'phone':'010123456780', 'brith':'0208'}
dict_data
[Output] {'name': 'YG_analyst', 'phone': '010123456780', 'brith': '0208'}

이와 같이 딕셔너리 형태로 저장된 데이터로 사전의 형태를 만들 수 있는 것이다.

ex1 = {'lst':[1,2,3]}
ex1
[Output] {'lst': [1, 2, 3]}

뒤에서도 나오지만 key값은 유일하고 변하지 않는 값(숫자형, 문자형, 튜플)이 와야하고, Value는 모든 자료형을 가질 수 있다.

1-1. 딕셔너리 쌍 추가

쌍 추가를 하기 전 key값을 통해 value를 얻는 방식을 이해할 필요가 있다.

a = {'name':'YG_analyst'}
a['name']
[Output] 'YG_analyst'

이와 같이 a['key값']을 이용해 해당 key값의 value를 얻을 수 있다.

a['age'] = 25
print(a)

    [Output] {'name': 'YG_analyst', 'age': 25}
    
같은 방법으로 새로운 key값 'age' value를 25 지정해 줌으로써 새로운 쌍을 추가할  있다.  


```python
a[1] = 'val'
print(a)
[Output] {'name': 'YG_analyst', 'age': 25, 1: 'val'}

마찬가지의 방법으로 숫자형 key값 1에 문자형 value ‘val’ 쌍을 추가했다.

1-2. 딕셔너리 key값의 특징

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

TypeError                                 Traceback (most recent call last)

<ipython-input-103-5befcb9ada65> in <module>()
----> 1 a = {[1,2]:'a'}


TypeError: unhashable type: 'list'

key값은 유일성,불변성의 특징을 같는다고 했다. 따라서 리스트는 key값으로 올 수 없다.

a = {(1,2):'b'}
print(a)
[Output] {(1, 2): 'b'}

리스트와 달리 튜플자료형은 불변하는 성질이 있으므로 key로 사용이 가능하다.

1-3. 딕셔너리 관련 함수

  • keys 리스트 만들기(keys)
my_data = {'name' : 'YG_analyst', 'height':183, 'weight':83, 'age':'100'}
my_data.keys()
[Outpit] dict_keys(['name', 'height', 'weight', 'age'])

딕셔너리의 key값들을 모아 dict_keys 객체를 반환한다.

type(my_data.keys())
[Outpit] dict_keys

for 구문에서는 list의 형태와 같이 사용할 수 있고, 리스트 자료형이 필요할때는 list(my_data.keys())을 이용해 얻을 수 있다.

for k in my_data.keys():
    print(k)
[Output]
name
height
weight
age

for구문을 이용해 dict_keys 객체 안의 요소를 하나씩 출력해봤다.

list(my_data.keys())
[Output] ['name', 'height', 'weight', 'age']

list()를 이용해 리스트를 생성했다.

  • value 리스트 만들기
my_data = {'name' : 'YG_analyst', 'height':183, 'weight':83, 'age':'100'}
my_data.values()
[Output] dict_values(['YG_analyst', 183, 83, '100'])

keys와 같은 방법으로 딕셔너리의 value값들을 dict_values객체로 반환해준다.

  • key, value 쌍 얻기(items)
my_data = {'name' : 'YG_analyst', 'height':183, 'weight':83, 'age':'100'}
my_data.items()  # 튜플로 묶은 값을 반환
[Output] dict_items([('name', 'YG_analyst'), ('height', 183), ('weight', 83), ('age', '100')])

items()는 key와 value쌍을 튜플로 묶어 dict_items 객체로 반환해준다.

  • key로 value 얻기(get)
my_data = {'name' : 'YG_analyst', 'height':183, 'weight':83, 'age':'100'}
my_data.get('name')
[Output] 'YG_analyst'

get()함수는 앞서 key값으로 value를 얻는 방법과 동일하게 이용되는 함수이다.

my_data.get('number','정보가 없네요.')
[Output] '정보가 없네요.'

다만 이 함수는 get('찾을 key값', '디폴트 값')을 통해 찾을 key값이 없을 경우, 지정한 디폴트 값을 출력해 주는 차이가 있다.

  • key값의 포함 여부 (True/False)
my_data = {'name' : 'YG_analyst', 'height':183, 'weight':83, 'age':'100'}
'name' in my_data
[Output] True
'number' in my_data
[Output] False

key값이 딕셔너리에 포함되어있으면 True, 아니면 False를 반환한다. 참과 거짓에 대한 설명은 추후에 업로드 예정이다.


Reference

도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.

댓글남기기