2021-04-28 11:17:58

오늘은 딕셔너리 객체의 get() 메소드에 대해 설명하도록 하겠습니다. 먼저 get() 메서드의 필요성을 먼저 살펴보겠습니다. 

 

우선 과일 종류를 키로, 가격을 값으로 갖는 다음과 같은 딕셔너리 a가 있다고 가정하겠습니다.

 

a = {"banana": 1500, "watermelon": 900}

 

이 딕셔너리에서 바나나의 가격을 참조하고 싶으면 다음과 같이 코드를 짤 수 있습니다. 

 

print(a["banana"])  # 1500

 

그런데 위와 같은 방식으로 코드를 작성하면 우리가 키로 선택한 것이 딕셔너리에 없는 경우에는 Key 에러가 발생합니다. 

 

print(a["grape"])  # KeyError: 'grape'

 

이렇게 딕셔너리에 존재하지 않는 키를 참조하려고 할 위험이 조금이라도 있는 경우에는 위와 같은 방식으로 코드를 짜는 것은 위험합니다. 대신 딕셔너리의 get() 메서드를 사용하면 조금 더 안전하게 작동하는 코드를 짤 수 있습니다. 

 

우선 get() 메서드는 다음과 같이 사용합니다.

 

dict.get(key, default=None)

 

get 메서드의 리턴값은 첫번째 인자인 키의 값입니다. 무슨 말인지 모르실 분들을 위해서 예를 들어서 설명하겠습니다. 사실 처음이라면 무슨 말인지 이해가 안 되는 것이 정상입니다.

 

a = {"banana": 1500, "watermelon": 900}

print(a.get("banana"))  # 1500 
print(a.get("grape"))  # None

 

위와 같이 get 메서드를 사용하면 참조하고자 하는 키가 존재하지 않더라도 에러를 발생시키지 않고 None 값을 리턴해줍니다. 그러면 개발자는 if a.get("banana"): 이런 식으로 값의 존재 여부를 가지고 다음 로직들을 구현해나갈 수 있습니다.

 

만약 디폴트 값으로 None 대신에 다른 값을 설정하고 싶다면 두번째 인자로 넣어주면 됩니다. 

 

print(a.get("banana", 0))  # 1500 
print(a.get("grape", 0))  # 0

 

그러면 None 대신 0을 반환해줍니다. 

 

이렇게 키가 존재하지 않을 경우를 대비해서 get 메서드를 사용하여 default 값을 설정해놓으면 조금 더 오류에 잘 대비된 코드를 짤 수가 있습니다.