자료의 대응 관계를 나타내는 자료형이다.
연관 배열(Associative Array) 또는 해시(Hash)라고도 부른다.
데이터를 조회할 때 key를 통해 value를 구한다.
딕셔너리의 선언 방법
딕셔너리는 중괄호{} 로 선언한다.
키 : 값 의 형태로 이루어져 있으며 콤마(,)로 연결하여 많은 값들을 작성한다.
키는 문자열, 숫자, 불 등으로 선언할 수 있지만 일반적으로는 문자열을 주로 사용한다.
# 딕셔너리 선언
dic = {"name" : "andy", "birth" : "1118"}
# value 값에는 어떠한 값이나 다 들어갈 수 있다.
dic = {"a" : [1, 2, 3]}
print(dic)
# 결과값
# {'a': [1, 2, 3]}
딕셔너리 추가, 삭제
dic = {"a" : [1, 2, 3]}
# 키를 기반으로 값을 입력
dic["name"] = "andy"
print(dic)
# 결과값
# {'a': [1, 2, 3], 'name': 'andy'}
# 이미 존재하는 키를 지정하고 값을 넣으면 기존의 값을 새로운 값으로 대체한다.
# 딕셔너리는 키의 중복을 허용하지 않는다.
dic["name"] = "apple"
print(dic)
# 결과값
# {'a': [1, 2, 3], 'name': 'apple'}
# 딕셔너리 삭제
# 딕셔너리는 index가 존재하지 않기때문에 key 값으로 제거를 해아한다.
del dic["name"]
print(dic)
# 결과값
# {'a': [1, 2, 3]}
딕셔너리 데이터 추출
score = {"kim" : 10, "lee" : 99}
print(score["kim"])
print(score["lee"])
# 결과값
# 10
# 99
딕셔너리의 key는 고유한 값이다.
따라서 중복을 허용하지 않는다.
왜냐하면 동일한 key가 존재한다면 어떤 value를 불러와야할지 알 수 없기 때문이다.
dic = {1 : "a", 1 : "b"}
print(dic)
# 결과값
# {1 : 'b'}
딕셔너리의 key에 튜플 사용하기
딕셔너리의 key에 튜플은 사용할 수 있다. 하지만 리스트는 사용이 불가능하다.
왜냐하면 딕셔너리의 key의 요건은 변하지 않는 값이어야 하기 때문이다.
# 딕셔너리 key 값에 리스트 넣기
dic = {[1, 2] : "hi"}
# 결과값
# TypeError: unhashable type: 'list'
# 딕셔너리 key 값에 튜플 넣기
dic = {(1, 2) : "hi"}
print([{1, 2}])
# 결과값
# hi
딕셔너리 관련 함수
1. key()
딕셔너리의 key 값들을 알아오기 위해서 사용하는 메서드이다.
dic = {"name" : "andy", "phone" : "01011112222", "birth" : "1118"}
dic.keys()
# 결과값
# dict_keys(['name', 'phone', 'birth'])
2. value()
딕셔너리의 value 값들을 알아오기 위해서 사용하는 메서드이다.
dic = {"name" : "andy", "phone" : "01011112222", "birth" : "1118"}
dic.values()
# 결과값
# dict_values(['andy', '01011112222', '1118'])
3. item()
딕셔너리의 key, value 값들을 모두 확인하기 위해서 사용하는 메서드이다.
dic = {"name" : "andy", "phone" : "01011112222", "birth" : "1118"}
dic.items()
# 결과값
# dict_items([('name', 'andy'), ('phone', '01011112222'), ('birth', '1118')])
4. get()
사용자가 원하는 key 로 value 를 찾기 위해서 사용하는 메서드이다.
존재하지 않는 key 로 value 를 가져오려고 하는 경우 오류가 발생한다.
하지만 get 함수로 key 가 없는 value 를 가져오려고 하는 경우 기본값을 대신 가져오게 할 수 있다.
dic = {"name" : "andy", "phone" : "01011112222", "birth" : "1118"}
# 존재하지 않는 키로 값 가져오기
dic["foo"]
# 결과값
# KeyError: 'foo'
# 딕셔너리에 값이 없다면 "bar" 라는 문자열을 반환한다.
dic.get("foo", "bar")
# 결과값
# 'bar'
# 딕셔너리에 값이 있다면 "bar" 라는 값을 반환하지 않고 "name"에 맞는 value값을 반환한다.
dic.get("name", "bar")
# 결과값
# 'andy'
5. in
해당 key가 딕셔너리 안에 있는지 확인하기 위해서 사용하는 메서드이다.
dic = {"name" : "andy", "phone" : "01011112222", "birth" : "1118"}
"name" in dic
# 결과값
# True
"email" in dic
# 결과값
# False
6. clear()
딕셔너리에 들어있는 모든 값들을 삭제하기 위해서 사용하는 메서드이다.
dic = {"name" : "andy", "phone" : "01011112222", "birth" : "1118"}
dic.clear()
print(dic)
# 결과값
# {}