본문 바로가기
파이썬/파이썬 기초

코딩테스트를 위한 딕셔너리 (dictionary) 자료형 - keys, values, get, in, items

by Go! Jake 2021. 6. 2.

 

 

이전 글: 파이썬 반올림, 올림, 내림, 버림 - round, ceil, floor, trunc의 모든 것

목적

코딩 테스트 시 딕셔너리 함수를 사용하면 여러 문제를 효율적으로 해결할 수 있다.

 

딕셔너리 만들기 

>>> _dic={1:"hello1", 2:"hello2"}
>>> _dic
{1: 'hello1', 2: 'hello2'}

위와 같이 간단히 중괄호 내에 key:value 구조로 만들 수 있다. key를 찾으면 key에 맞는 value를 가져오도록 쌍으로 구성되어 있다.

 

이 때 값을 가져오려면 _dic[key]를 입력하면 값을 가져올 수 있다.

>>> _dic[1]
'hello1'

딕셔너리 추가

위와 같이 간단히 만들 수 있지만 특정 값을 추가해야 될 때가 있다.

>>> _dic
{1: 'hello1', 2: 'hello2'}
>>> _dic[3]='nothing'
>>> _dic
{1: 'hello1', 2: 'hello2', 3: 'nothing'}

이 때는 간단히, _dic[key]=value 구조로 딕셔너리 정보를 추가할 수 있다.

 

참고로, value는 리스트형으로 만들 수 있으며 key는 리스트 입력이 불가능하고 튜플로 입력할 수 있다.

>>> _dic
{1: 'hello1', 2: 'hello2'}
>>> _dic[(1,2)]=[1,2,3,4]
>>> _dic
{1: 'hello1', 2: 'hello2', (1, 2): [1, 2, 3, 4]}

 

딕셔너리 삭제
>>> _dic
{1: 'hello1', 2: 'hello2', 3: 'nothing'}
>>> del _dic[3]
>>> _dic
{1: 'hello1', 2: 'hello2'}

삭제는 del _dic[key] 구조로 삭제할 수 있다.

 

 

딕셔너리 get

코딩테스트에서 딕셔너리에서 가장 중요한 get 함수이다.

위 내용에서 dictionary 값을 가져올 때 _dic[key]의 형태로 가져온다고 적었다. 이 때 key가 없다면 아래 에러가 발생한다.

>>> _dic[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 10

 

for문 등으로 딕셔너리를 사용할 때 key가 없는 경우엔 무시하고 넘어가고 싶은 데, 에러 발생하는 경우가 있다. 이 때 .get() 함수를 사용하면, key가 없을 땐 None을 리턴하고, key가 있을 땐 value를 가져온다.

>>> _dic.get(10)
>>> _dic.get(1)
'hello1'

 

딕셔너리 keys, values, in, items

딕셔너리 자료형에 값을 모두 저장한 후 딕셔너리 내에 키 또는 값이 있으면 추가 계산을 하고, 없다면 진행하지 않는 경우가 생긴다.

 

이 때 파이썬의 keys, values, in을 사용할 수 있다.

 

keys는 딕셔너리 내에 키 값들을 리스트형으로 만든다. 

>>> _dic
{1: 'hello1', 2: 'hello2'}
>>> _dic.keys()
dict_keys([1, 2])
>>> 1 in _dic.keys()
True

keys를 리스트로 리턴받고, 키에 원하는 값이 있는 지 in을 통해 볼 수 있다.

 

 

values는 딕셔너리 내에 값들을 리스트형으로 만든다.

>>> _dic
{1: 'hello1', 2: 'hello2'}
>>> _dic.values()
dict_values(['hello1', 'hello2'])
>>> 'hello1' in _dic.values()
True

 

참고만 하면, items는 key와 value를 쌍으로 이뤄진 튜플을 보여주는 view object를 리턴한다.

>>> _dic
{1: 'hello1', 2: 'hello2'}
>>> _dic.items()
dict_items([(1, 'hello1'), (2, 'hello2')])
>>> (1, 'hello1') in _dic.items() 
True

 

Reference

02-5 딕셔너리 자료형 - 점프 투 파이썬 (wikidocs.net)

 

 

댓글