immutable한 키와 mutable한 값으로 맵핑되어 있는 순서가 없는 집합
연관 배열 혹은 해시라고 함
key를 통해 value를 얻음
key는 고유한 값이기 때문에 중복되는 key값을 설정하면 하나 제외하고 나머지 무시
dic = dict()
dic = {}
dic = {1 : 'a'}
dic[2] = 'b' #key: 2, value: b
print(dic)
#출력 결과
#{1 : 'a', 2 : 'b'}
dic = {1 : 'a', 2 : 'b'}
del dic[1]
print(dic)
dic.pop(2)
print(dic)
#출력 결과
#{2 : 'b'}
#{}
dic = {1 : 'a', 2 : 'b'}
print(dic[1])
print(dic[2])
#출력 결과
#a
#b
❗ keyError
dictionary에 없는 key에 접근하면 keyError 발생
dic = {1 : 'a', 2 : 'b'}
print(dic[3]) #에러 발생
key 리스트 만들기
dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.keys())
#출력 결과
#dic_keys(['one', 'two', 'three'])
value 리스트 만들기
dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.values())
#출력 결과
#dic_values([1, 2, 3])
key, value 쌍 얻기
dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.items())
#출력 결과
#dic_items([('one', 1), ('two', 2), ('three', 3)])
key로 value 얻기
dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.get('one'))
print(dic.get('four')) #찾으려는 key가 없으면 None 반환
print(dic.get('four', 4)) #찾으려는 key가 없을 때 default값 갖고 오게 하기
#출력 결과
#1
#None
#4
key가 딕셔너리 안에 있는지 조사
dic = {'one': 1, 'two': 2, 'three': 3}
print('one' in dic)
print('four' in dic)
#출력 결과
#True
#False
수정하기
dic = {'one': 1, 'two': 2, 'three': 3}
dic.update(one=100)
print(dic)
#출력 결과
#{'one': 100, 'two': 2, 'three': 3}
dic = {1: 'one', 2: 'two', 3: 'three'}
dic.update({1: 'ONE'})
print(dic)
dic.update([[1, 'one']])
print(dic)
#출력 결과
#{1: 'ONE', 2: 'two', 3: 'three'}
#{1: 'one', 2: 'two', 3: 'three'}
모든 key, value 삭제하기
dic = {'one': 1, 'two': 2, 'three': 3}
dic.clear()
setdefault(key[, default])
dic = {1: 'one', 2: 'two'}
print(dic.setdefault(1))
#출력 결과
#one
dic = {}
dicKey = ['one', 'two', 'three']
for key in dicKey:
dic.setdefault(key, 0)
print(dic)
#출력 결과
#{'one': 0, 'two': 0, 'three': 0}
collections의 defaultdict
인자로 주어진 객체의 기본값을 딕셔너리의 초기값으로 지정
값을 지정하지 않은 키는
기본값이 int일 때 0,
리스트일 때는 빈 리스트,
set이면 set()으로 초기화
key에 명시적으로 값을 지정하면 그 값이 지정됨
setdefault보다 빠름
from collections import defaultdict
dic = defaultdict(int)
print(dic)
dic['key1']
print(dic)
dic['key2'] = 2
print(dic)
#출력 결과
#defaultdict(<class 'int'>, {})
#defaultdict(<class 'int'>, {'key1': 0})
#defaultdict(<class 'int'>, {'key1': 0, 'key2': 2})
default(int) 활용 예제
from collections import defaultdict
letters = 'hello'
dic = defaultdict(int)
for l in letters:
dic[l] += 1
print(dic)
#출력 결과
#defaultdict(<class 'int'>, {'h': 1, 'e': 1, 'l': 2, 'o': 1})
참고
https://wikidocs.net/16
https://wikidocs.net/33177
https://appia.tistory.com/218
https://dojang.io/mod/page/view.php?id=2307
https://dongdongfather.tistory.com/69