Python 딕셔너리 응용문법

이번에는 딕셔너리 응용문법과 예시에 대해 정리해봤습니다.

딕셔너리 키-쌍 추가

setdefault : 키-값 쌍 추가(기존키의 값 수정 불가)
update : 키의 값 수정, 키가 없으면 키-값 쌍 추가
D={1:10, 2:20, 3:30}    #키만 추가시 값은None
D.setdefault(4)
print(D)
>>>{1: 10, 2: 20, 3: 30, 4: None}

D={1:10, 2:20, 3:30}    #키-값 쌍 추가
D.setdefault(4,40)
print(D)
>>>{1: 10, 2: 20, 3: 30, 4: 40}

D={'a':10, 'b':20, 'c':30}    #키 존재시 값 업데이트
D.update(a=15)
print(D)
>>>{'a': 15, 'b': 20, 'c': 30}

D={'a':10, 'b':20, 'c':30}    #키 미존재시 키-값 업데이트
D.update(d=40)
print(D)
>>>{'a': 10, 'b': 20, 'c': 30, 'd': 40}

D={'a':10, 'b':20, 'c':30}    #다중 업데이트 가능
D.update(a=15, d=40)
print(D)
>>>{'a': 15, 'b': 20, 'c': 30, 'd': 40}

D={'a':10, 'b':20, 'c':30}    #딕셔너리형식으로 업데이트
D.update({'a':15, 'd':40})
print(D)
>>>{'a': 15, 'b': 20, 'c': 30, 'd': 40}

D={'a':10, 'b':20, 'c':30}    #리스트형식으로 업데이트
D.update([['a',15], ['d',40]])
print(D)
>>>{'a': 15, 'b': 20, 'c': 30, 'd': 40}

D={'a':10, 'b':20, 'c':30}    #튜플형식으로 업데이트
D.update((('a',15), ('d',40)))
print(D)
>>>{'a': 15, 'b': 20, 'c': 30, 'd': 40}

D={'a':10, 'b':20, 'c':30}    #업데이트
D.update([('a',15),('d',40)])
print(D)
>>>{'a': 15, 'b': 20, 'c': 30, 'd': 40}

D={'a':10, 'b':20, 'c':30}    #키값리스트 zip객체로 업데이트
D.update(zip(['a','d'],[15,40]))
print(D)
>>>{'a': 15, 'b': 20, 'c': 30, 'd': 40}

딕셔너리 키-값 삭제

pop(키) : 특정키-값 쌍을 삭제(키 미존재시 오류)
pop(키,반환값) : 특정키-값 쌍을 삭제(키 미존재시 지정 반환값 반환)
popitem() : 키-값 쌍 삭제, 튜플형태로 쌍 반환(3.5이하버전에서는 임의의 쌍, 3.6이상버전에서는 마지막 쌍)
clear() : 모든 키-값 쌍 삭제, 빈 딕셔너리로 만듬
D={'a':10, 'b':20, 'c':30}
print(D.pop('a'))
print(D)
>>>10
>>>{'b': 20, 'c': 30}

D={'a':10, 'b':20, 'c':30}
print(D.pop('d'))
print(D)
>>>0
>>>{'b': 20, 'c': 30}

D={'a':10, 'b':20, 'c':30}
del D['a']    #반환값 없음
print(D)
>>>{'b': 20, 'c': 30}

D={'a':10, 'b':20, 'c':30}
print(D.popitem())
print(D)
>>>('c', 30)
>>>{'a': 10, 'b': 20}

D={'a':10, 'b':20, 'c':30}
D.clear()
print(D)
>>>{}

딕셔너리 키의 값 가져오기

get(키) : 특정키의 값을 반환(키 미존재시 None 반환)
get(키, 반환값) : 특정키의 값을 반환(키 미존재시 지정 반환값 반환)
D={'a':10, 'b':20, 'c':30}
print(D.get('a'))
>>>10

D={'a':10, 'b':20, 'c':30}
print(D.get('d', 0))
>>>0

딕셔너리 키-값 쌍 가져오기

items() : dict_items([(키1,값1),(키2,값2),(키3,값3)]) 형식으로 반환
keys() : dict_keys([키1,키2,키3]) 형식으로 반환
values() : dict_values([값1,값2,값3]) 형식으로 반환
D={'a':10, 'b':20, 'c':30}
print(D.items())
>>>dict_items([('a', 10), ('b', 20), ('c', 30)])

D={'a':10, 'b':20, 'c':30}
print(D.keys())
>>>dict_keys(['a', 'b', 'c'])

D={'a':10, 'b':20, 'c':30}
print(D.values())
>>>dict_values([10, 20, 30])

리스트와 튜플로 딕셔너리 만들기

dict.fromkeys(키 리스트) : 키 리스트로 딕셔너리를 생성, 값은 모두 None(키 튜플로도 생성 가능)
dict.fromkeys(키 리스트, 값) : 키 리스트로 딕셔너리를 생성, 값은 모두 지정값으로(키 튜플로도 생성 가능)
L=['a','b','c','d']
D=dict.fromkeys(L)
print(D)
>>>{'a': None, 'b': None, 'c': None, 'd': None}

T=('a','b','c','d')
D=dict.fromkeys(T)
print(D)
>>>{'a': None, 'b': None, 'c': None, 'd': None}

L=['a','b','c','d']
D=dict.fromkeys(L, 1)
print(D)
>>>{'a': 1, 'b': 1, 'c': 1, 'd': 1}

T=('a','b','c','d')
D=dict.fromkeys(T, 1)
print(D)
>>>{'a': 1, 'b': 1, 'c': 1, 'd': 1}

#딕셔너리 없는키 접근시 에러방지 초기값1
from collections import defaultdict 
D = defaultdict(int)    #int(=0)로 기본값 생성
print(D['z'])
>>>0

#딕셔너리 없는키 접근시 에러방지 초기값2
from collections import defaultdict 
D = defaultdict(lambda: 'a')    #int(=0)로 기본값 생성
print(D['z'])
>>>a