Programming/python

python 딕셔너리에서 KeyError가 발생하지 않도록 하는 방법 | get, pop

알 수 없는 사용자 2022. 1. 14. 13:16
반응형

python 딕셔너리에서 값을 가져오거나 삭제할 때 KeyError가 발생하지 않도록 하는 방법 | get, pop


python에서 딕셔너리는 매우 빈번하게 사용하는 자료구조입니다. 속도도 매우 빨라서 딕셔너리만으로도 왠만한 일들은 다 처리할 수 있죠.

python에서 딕셔너리를 만들어서 값을 집어넣는건 아래와 같이 매우 간단합니다.

d = {}
d['A'] = "Apple"
d['B'] = "Battle"
print(d)
> python dictionary.py
{'A': 'Apple', 'B': 'Battle'}

 

값을 가져올 땐 어떻게 할까요? 보통 아래와 같은 방법으로 가져오게 됩니다. 역시 매우 간단하죠.

d = {}
d['A'] = "Apple"
d['B'] = "Battle"
print(d['A'])
> python dictionary.py 
Apple

 

하지만 종종 특정 키/값을 가져오려고 하는데 키/값이 딕셔너리에 없을때도 있습니다. 그럴땐 KeyError가 발생하게 되죠.

d = {}
d['A'] = "Apple"
d['B'] = "Battle"
print(d['C'])
> python dictionary.py 
Traceback (most recent call last):
  File "/Users/Project/dictionary.py", line 4, in <module>
    print(d['C'])
KeyError: 'C'

 

그럴때 사용할 수 있는게 바로 get 메서드입니다. get 메서드는 딕셔너리에 값이 있으면 그 값을 가져오고 그렇지 않으면 default 값이 나오도록 해줍니다. default 값은 None인데 사용자가 임의의 값을 지정해줄 수도 있습니다.

d = {}
d['A'] = "Apple"
d['B'] = "Battle"
res = d.get('C')
print(res)
> python dictionary.py 
None
d = {}
d['A'] = "Apple"
d['B'] = "Battle"
res = d.get('C', "Cat")
print(res)
dictionary.py 
Cat

 

그럼 pop 메서드는 뭘까요? pop은 get과 동일하게 동작하는데 딕셔너리에 해당 키 값이 존재하면 딕셔너리에서 삭제합니다. 보통 딕셔너리에서 키 값을 삭제할 때 del 을 사용하는데 이때도 값이 존재하지 않으면 KeyError가 발생하죠. pop을 사용하면 이를 방지하는 역할도 할 수 있습니다. 다만 그때는 pop을 사용할 때 default 값을 사용자가 지정해주어야 합니다.

d = {}
d['A'] = "Apple"
d['B'] = "Battle"
# del d['C']  # KeyError Exception 발생
# res = d.pop("C")  # KeyError Exception 발생
a = d.pop("C", None)  # Exception 발생하지 않음
b = d.pop("B", None)
print("a:", a)
print("b:", b)
print(d)
> python dictionary.py 
a: None
b: Battle
{'A': 'Apple'}

 

반응형

'Programming > python' 카테고리의 다른 글

python 에서 tsv 파일 읽기  (0) 2022.04.06
python - 중복된 문자 줄이기  (0) 2022.01.12