[Python 기초] 파이썬 자료형 - 딕셔너리(Dictionary)
업데이트:
개요
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
도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.
댓글남기기