반응형
remove dict key

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

+ Recent posts