5. 고급 자료형 II > 5-4. 딕셔너리와 관련된 함수

딕셔너리와 관련된 함수

해당 파트는 아래 영상 시청 후 교안을 정독해주세요.

keys() - Key만 뽑아내기

딕셔너리에서 Key들만 뽑아내는 함수입니다. 뽑아낸 결과물은 리스트나 튜플이 아닌 dict_keys라는 '자료형'으로 저장됩니다. 다만 dict_keys는 정식 자료형이 아니기에, 결과물을 실제로 활용하고 싶을 경우 리스트화할 필요가 있습니다.

dic = {1:'a', 2:'b', 3:'c'}
keys_from_dic = dic.keys()
print(keys_from_dic) #dict_keys([1,2,3])이라는 본 적 없는 자료형이 출력됩니다.
type(keys_from_dic) #자료형 확인을 위해 type()함수를 사용해보면 dict_keys라는, 배운 적 없는 결과물이 출력됩니다.
keys_from_dic = list(dic.keys()) #keys()함수를 통해 뽑아낸 Key 모음을 실제로 활용하기 위해서는 이처럼 리스트화를 해주어야 합니다.

values() - Value만 뽑아내기

딕셔너리에서 Value들만 뽑아내는 함수입니다. 이를 통한 결과물 역시 dict_values라는 독특한 ''자료형''으로 저장됩니다.

dic = {1:'a', 2:'b', 3:'c'}
values_from_dic = dic.values()
print(values_from_dic) #dict_values(['a', 'b', 'c'])가 출력됩니다.

사실 Key나 Value만을 따로 뽑아낼 일은 많지 않습니다. 일반적으로 딕셔너리는 매우 많은 데이터를 담기 위해 사용되기 때문입니다.

clear() - 딕셔너리 초기화하기

말 그대로 딕셔너리 내부가 초기화됩니다. 초기화 이후 딕셔너리를 출력해보면 속이 텅 빈 중괄호{}만 출력됩니다.

dic.clear()
print(dic) #{}가 출력됩니다.

get() - Key를 통해 Value 얻기

앞선 내용을 잘 따라오셨다면, 본 함수를 보고 조금 이상한 느낌을 받으셔야 합니다. 왜냐면 우리는 이 함수 없이도 Key를 통해 Value값을 얻을 수 있거든요. 바로 a[Key]와 같은 Key 인덱싱을 통해서요. 그런데 우리는 왜 굳이 get() 함수를 배우는 것일까요?

우리가 알아야 할 Key 인덱싱과 get() 함수의 차이점은 두가지가 있습니다.

  • 첫째, 존재하지 않는 Key를 넣었을 때 결과값이 다릅니다.
    • Key 인덱싱의 경우 존재하지 않는 Key를 인덱싱하면 에러가 발생합니다.
    • get() 함수의 경우 존재하지 않는 Key를 인수로 넣어도 None이라는 결과값을 반환합니다.
  • 둘째, get() 함수의 경우 존재하지 않는 Key를 넣었을 때 결과값 지정이 가능합니다.
    • get() 함수의 경우 존재하지 않는 Key의 Value를 반환할 것을 요청 받았을 때 None이라는 결과값이 아닌 특정 값을 반환할 수 있습니다.

이러한 차이는 실제 프로그램을 만들 경우 매우 커다란 차이를 야기합니다. Key 인덱싱의 경우 Key가 없다면 에러로 프로그램이 중단되지만, get() 함수의 경우 없는 Key를 인수로 받아도 프로그램이 끊기지 않고 돌아갈 수 있기 때문입니다.

vegan_matzip = {'제로비건':'02-5145-8910', '쏭타이':'0507-1303-2495', '몽크스부처':'02-790-1108', '드렁큰비건':'070-7543-8101'}
print(vegan_matzip['플랜트']) #딕셔너리에 존재하지 않는 Key이기에 에러가 발생합니다.
print(vegan_matzip.get('플랜트')) #딕셔너리에 존재하지 않는 Key이지만 None 값을 반환합니다.
print(vegan_matzip.get('플랜트', '등록되지 않은 비건 맛집입니다.')) #get() 함수의 경우 존재하지 않는 Key를 인수로 받았을 경우 출력할 메시지를 직접 정해줄 수 있습니다. 인수 뒤에 원하는 메시지를 적어주면 됩니다.

이를 구글 콜랩에서 돌려보면 다음과 같은 결과가 나옵니다.

get() 함수와 Key indexing 비교

in - Key의 존재 여부 확인하기

소괄호 안에 인수를 넣는 방식이 아니라 헷갈리실 수 있지만, 매우 간단한 형태입니다. Key in Dictionary 양식에 맞추어 코드를 작성하면 Boolean 자료형을 통해 그 결과값을 반환합니다. 작성한 Key가 딕셔너리 내에 있다면 True를, 없다면 False를 반환합니다.

vegan_matzip = {'제로비건':'02-5145-8910', '쏭타이':'0507-1303-2495', '몽크스부처':'02-790-1108', '드렁큰비건':'070-7543-8101'}
print('쏭타이' in vegan_matzip) #True가 출력됩니다.
print('플랜트' in vegan_matzip) #False가 출력됩니다.
마지막으로 업데이트 된 날짜:
2022년 9월 24일