반응형
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 |