본문 바로가기
CODING/Python

[Python] Dictionary에 key값이 없을 때 .get() / .setdefault()로 예외처리

by 밍톨맹톨 2023. 5. 12.
728x90
728x90

딕셔너리에서 값을 찾을 때 특정 Key가 있는지 없는지 확인하기 위해 아래와 같은 코드를 이용하곤 한다.

data = {'이름': '홍길동', '나이': 14}

if '주소' in data:
    print(data['주소'])
else:
    print("존재하지 않습니다!")

Or

data = {'이름': '홍길동', '나이': 14}

try:
    print(data['주소'])
except:
    print("존재하지 않습니다!")

이렇게 코드를 작성하다보면 코드가 엄청 길어지기 때문에 가독성이 떨어질 가능성이 높아진다. 

이 때 있는지 없는지 단순히 확인하고 싶을 때 아래와 같이 사용할 수 있다.

 

1.  .get(찾는 key값, 없으면 return 값) 함수 사용 : 값 저장 X 

get함수를 사용하면 data['이름']과 같이 데이터를 가져올 수 있는데, 

만약 Key값이 존재하지 않는다면, 뒤에 있는 값을 출력하게 된다. 

이 때 '주소'값에 대해서 새로 값을 저장하는 등이 Action을 취하지는 않는다. 

data = {'이름': '홍길동', '나이': 14}
    
# 있으면 data['이름']이 출력되고 없으면 '존재하지 않습니다.'가 출력됨 
print(data.get('이름', '존재하지 않습니다'))

# 있으면 data['주소']이 출력되고 없으면 '존재하지 않습니다.'가 출력됨
print(data.get('주소', '존재하지 않습니다'))

 

 

2  .setdefault(찾는 key값, 기본 값) 함수 사용 :  key값이 없다면 기본 값을 저장

그렇지만 Key값이 없다면 데이터에 기본값을 설정해놓고 후에 변경을 원할 수도 있다. 

이 때 사용할 수 있는 것이 바로 '.setdefault'이다.

data = {'이름': '홍길동', '나이': 14}

# 딕셔너리에 해당 Key가 없다면 지정값으로 저장해주고 싶을 때
print(data.setdefault('주소', '존재하지 않습니다.'))

data의 출력값을 보면 새로 '주소'라는 값을 할당해준 것을 알 수 있다!

 

이렇게 해서 딕셔너리에서 if문과 try-except을 사용하지 않고 값을 할당해주거나 예외처리하는 방법에 대해서 알아보았습니다~

728x90

댓글