딕셔너리란?
파이썬에서는 사람처럼 '개' = '동물', '커피' = '음료' 저절로 구분 할 수 없어서 딕셔너리를 통해 'Key' = 'Value'로 지정을 해놓아 Key와 Value를 한 쌍으로 갖는 자료형이다. 그렇기 때문에 튜플이나 리스트처럼 순차적으로 요솟값을 구하는게 아니라 Key를 통해 Value를 얻는 특징이 있다.
딕셔너리
{Key1:Value1, Key2:Value2, Key3:Value3, ...}
Key와 Value의 쌍 모두 {}로 둘러싸여 있다.
각각의 요소는 Key : Value 형태로 이루어져 있고 ,로 구분되어 있다.
예)
me = {'name':'유재우', 'age':24, 'birth':'19980811'} print(me)
{'name': '유재우', 'age': 24, 'birth': '19980811'}
딕셔너리 쌍 추가, 삭제하기
딕셔너리 쌍 추가하기
plus = {'Hi':'Hello'} plus[3] = 'Plus' print(plus)
{'Hi': 'Hello', 3: 'Plus'}
딕셔너리 쌍 삭제하기
minus = {'bye':'BYE', 1:2, 3:'good'} print(minus) del minus[1] print(minus)
{'bye': 'BYE', 1: 2, 3: 'good'}
{'bye': 'BYE', 3: 'good'}
딕셔너리의 사용법
튜플이나 리스트에서는 인덱싱이나 슬라이싱을 통해서 값을 얻었지만 딕셔너리는 Key값을 통해서 Value값을 얻을수 있어서 간편하다.me = {'name':'유재우', 'age':24, 'birth':'19980811'} print(me['name']) print(me['age']) print(me['birth'])
유재우
24
19980811
🟥 주의사항
◼︎ 딕셔너리에서 Key값은 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다.
◼︎ Key에는 리스트를 사용할 수 없는점에 주의해야 한다.
딕셔너리 관련 함수
Key 리스트 만들기(keys)
me = {'name':'유재우', 'age':24, 'birth':'19980811'} me.keys()
dict_keys(['name', 'age', 'birth'])
me의 Key만을 모아서 보여주고 이를 리스트로 변환하려면list(me.keys())
['name', 'age', 'birth']
위 list() 함수를 사용하여 변환 할 수 있다.
Value 리스트 만들기(values)
Value도 마찬가지로 Key와 똑같이 사용 가능하다me = {'name':'유재우', 'age':24, 'birth':'19980811'} list(me.values())
['유재우', 24, '19980811']
Key, Value 쌍 얻기(items)
items 함수는 Key와 Value의 쌍을 튜플로 묶어서 dict_items 객체로 돌려준다. dict_items 객체 역시 dict_keys 객체와 마찬가지로 리스트를 사용하는 것과 동일하게 사용할 수 있다.list(me.items())
[('name', '유재우'), ('age', 24), ('birth', '19980811')]
Key: Value 쌍 모두 지우기(clear)
clear() 함수를 사용하여 딕셔너리 안에 모든 요소를 삭제 할수 있다.print(me.clear())
None
Key로 Value얻기(get)
get(Key) 함수를 사용해서 Key에 대응하는 Value를 얻을 수 있다.print(me.get('name'))
유재우
🟥 여기서 me['name'] 과의 차이점은 get()함수를 사용하면 Key값이 없을 경우에 None(거짓 이라는 의미)로 출력 되고 dic['Key']로 사용하면 컴파일 오류가 뜬다.
🔺 get()함수에서 만약 Key값이 없을 때를 대비하여 Key값 옆에 ,'디폴트 설정 값'으로 작성하여 사용할 수 있다.print(me.get('Hi','DEFAULT'))
DEFAULT
해당 Key가 딕셔너리 안에 있는지 조사하기(in)
in 함수를 사용하여 찾아보고 싶은 Key가 딕셔너리에 존재하는 지 판단할 수 있다.print('name' in me) print('No' in me)
True
False