👉🏻 딕셔너리란, 단어 그대로 사전이라는 뜻으로 키(Key)와 값(Value) 한 쌍이 하나의 대응 관계를 가지고 있는 자료형 이다.
예를 들어, "이름"="홍길동"은 "이름"이라는 Key가 열쇠고 "이름"의 Value로 "홍길동"이 쌍을 이루는 자료형이다.
딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고 Key를 통해 Value를 얻는다. 이것이 딕셔너리의 가장 큰 특징이다. "이름"이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 "이름"이라는 단어가 있는 곳만 펼쳐 보는 것이다.
✨ 딕셔너리 생성, 변경, 삭제 방법을 예제로 알아보자.
# 딕셔너리 생성 => 딕셔너리 = {키:값}
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
# 값 추가 => 딕셔너리[키] = 값
dic['email'] ='aaa@bbb'
# 값 삭제 => del 딕셔너리[키]
del dic['email']
# 값 접근 => 딕셔너리[키]
print(dic['name'])
1) 키 값은 중복 될 수 없다.
키 값은 고유해야하므로 동일한 키를 추가하면 나중에 추가된 키와 값에 기존의 키와 값이 덮어 씌워진다.
a = {1:'a', 1:'b'}
print(a)
# 결과
{1: 'b'}
2) 키 값에 list, set이 올 수 없다.
키 값엔 immutable(불변한) 객체 타입이 와야 하므로 mutable한 객체 타입인 list나 set 타입은 딕셔너리의 키가 될 수 없다.
a = {[1,2]:'hi}
TypeError: unhashable type: 'list'
딕셔너리.keys() 함수를 통해서 딕셔너리의 키(key)들을 한번에 볼 수 있다.
✨ 예제
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
print(dic.keys())
#for i in dic.keys():
# print(i)
# 결과
name
phone
birth
dic.keys()는 딕셔너리 dic의 key만을 모아서 dict_keys 객체를 돌려준다.
[파이썬 2.7 버전까지는 dic.keys() 함수를 호출할 때 반환 값으로 dict_keys가 아닌 리스트를 돌려줬지만, 3.0 이후는 리스트가 아닌 dics_keys 객체를 돌려준다.]
딕셔너리.values() 함수를 통해서 딕셔너리의 값(values)들을 한번에 볼 수 있다.
✨ 예제
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
print(dic.values())
#for i in dic.values():
# print(i)
#결과
tom
123456789
0000
딕셔너리.items() 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.
✨ 예제
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
print(dic.items())
#결과
dict_items([('name', 'tom'), ('phone', '123456789'), ('birth', '0000')])
딕셔너리.clear함수는 딕셔너리 안의 모든 요소를 삭제한다. 빈 딕셔너리는 {}로 표현한다.
✨ 예제
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
dic.clear()
print(dic)
#결과
{}
get(x) 함수는 x라는 Key에 대응 되는 Value를 돌려준다.
존재하지 않는 키 y로 값을 가져오려고 할 경우 dic['y']는 오류를 발생시키고, dic.get('y')는 None을 돌려준다.
✨ 예제
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
print(dic.get('name))
#결과
tom
✨ 예제
dic = {'name':'tom', 'phone':'123456789', 'birth':'0000'}
print('name' in dic)
#결과
True
'name'이 dic 딕셔너리 안에 존재하는 Key라면 True를 반환하고, 존재하지 않는다면 False를 반환한다.