반응형
Remove Dict Key
딕셔너리에서 키를 안전하게 삭제하는 방법.
샘플로 다음과 같은 dictionary가 있다고 하자.
dic = dict()
dic['apple']=100
dic['banana']=200
dic['orange']=300
# 간단하게 하면
dic = {'apple':100, 'banana':200, 'orange':300 }
위에서 apple를 지워보자.
del 로 삭제할때…
만약 키가 없으면 어떻게 될까?
del dic['mango']
KeyError!
안전하게 삭제하려면
# 1안
if 'mango' in dic:
del dic['mango']
위와 같이 존재하는지 검사한다음, 있으면 삭제하는 것으로 할 수 있다.
매번 이렇게 if를 해 주는게 귀찮긴 한데…
일단 삭제를 시도하고, 에러나면 에러 처리하도록 할 수 있다.
# 2안
try:
del dic['mango']
except KeyError:
pass
pop으로 삭제할때…
dict()의 pop()을 사용하면 값을 꺼내올 수 도 있고, 해당 키가 삭제되는 효과도 있다. 이것도 키가 없다면? 에러가 발생할 것 같은데…
del과 마찬가지로 KeyError 예외가 발생한다.
즉, 해결방법은 1안과 2안처럼, 존재체크를 하거나 예외 처리를 할 수 있다.
dic.pop('mango') # mango not found -> KeyError!!!
다른 방법은???
pop()의 다른 형태로는 파라미터에 값을 추가하면 키가 없을 때 디폴트 값을 리턴하도록 하는 기능이 있다. 이 방식을 사용하면 쉽게 안전한 삭제가 가능하다.
# 3안
dic.pop('mango', None) # if not found -> None. (no error!)
이제 있을지 모르는 키를 삭제하려면 pop( [key], None)을 사용하자.
dic.pop('apple', None)
위와 같이 하면 해당 키가 존재하는지 체크를 하거나 except 처리를 할 필요가 없다.
Author: crazyj7@gmail.com
'Python' 카테고리의 다른 글
Jupyter Notebook 소스 복구 (0) | 2020.06.16 |
---|---|
Docker python venv 패키지 유지 (0) | 2020.06.07 |
파이썬 충돌해결 module conflict (0) | 2019.12.01 |
파이썬 개발환경/가상환경구축 (0) | 2019.12.01 |
진법 표현 및 수 스트링 변환 (0) | 2019.11.24 |