12. 파이썬 딕셔너리 관련 함수

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난번 파이썬 딕셔너리 자료형에 이어 파이썬 딕셔너리 관련 함수에 대해 알아보겠습니다.

파이썬 딕셔너리 관련 함수들

딕셔너리를 내가 원하는 대로 사용하기 위해서는 딕셔너리 자체 함수를 알고 있어야 합니다.

Key 리스트(keys)

Python
>>> a = {'name':'pyth', 'mobile':'010-1234-9999', 'birth': '0403'}
>>> a.keys()
dict_keys(['name', 'mobile', 'birth'])

위처럼 a.keys()라고 명령하면 딕셔너리 a의 key만을 모아서 dict_keys 라는 객체를 리턴합니다.

참고로 파이썬 버전 2.7 버전 까지는 a.keys() 함수를 호출 했을 때 리스트를 리턴 했습니다. 리스트를 리턴 하기 위해서는 메모리 낭비가 발생하는데 이런 메모리 낭비를 줄이기 위해 파이썬 3.0 이후 버전 부터는 dict_keys 객체를 리턴 하도록 변경되었습니다.
dict_values, dict_items 같은 객체 역시 파이썬 3.0 이후에 추가된 것들입니다.
파이썬 3.0 이후 버전에서 리스트를 리턴 값으로 필요한 경우에는 list(a.keys()) 라고 명령 하면 됩니다.
dict_keys, dict_values, dict_items 객체는 리스트 변환 없이 for문 같은 기본적인 반복 구문에서 사용 할 수  있습니다.

dict_keys 객체 사용방법

Python
>>> for i in a.keys():
...    print(i)
...
name
mobile
birth

리스트 사용법과 똑같지만, 리스트 고유 함수인 append, insert, pop, remove, sort 함수는 사용 할 수 없습니다.
그리고 파이썬 문법으로 for 문 다음에 오는 print 문은 반드시 들여쓰기를 적용 해야 합니다.

dict_keys 객체를 리스트로 변환

Python
>>> list(a.keys())
['name', 'mobile', 'birth']

앞서 언급한 참고사항 에서 처럼 파이썬 3.0 이후 버전에서는 dict_keys 객체를 리스트로 변환하기 위해 list(딕셔너리.keys()) 라고 명령해주면 됩니다.

Value 리스트(values)

Python
>>> a.values()
dict_values(['pyth', '010-1234-9999', '0403'])

딕셔너리의 key를 얻기 위해 a.keys() 라고 했듯이 마찬가지로 values 만 얻고 싶으면 valuse 함수를 호출하면 됩니다. 결과처럼 dict_values 객체를 리턴합니다.

Key, Value 쌍 얻기(items)

Python
>>> a.items()
dict_items([('name', 'pyth'), ('mobile', '010-1234-9999'), ('birth', '0403')])

items 함수를 호출하면 Key 와 Value 를 쌍으로 묶은 튜플을 dict_items 객체로 반환하게 됩니다.

Key, Value 쌍 모두 지우기 (clear)

Python
>>> a.clear()
>>> a
{}

clear 함수는 딕셔너리의 모든 요소들을 삭제합니다.
빈 딕셔너리는 {}로 표현 되는 걸 볼 수 있습니다.

Key 로 Value 얻기(get)

Python
>>> a = {'name':'pyth', 'mobile':'010-1234-9999', 'birth': '0403'}
>>> a.get('name')
'pyth'
>>> a.get('mobile')
'010-1234-9999'

위의 예처럼 get(x) 라고 했을때 x Key에 대응하는 value 를 반환하게 됩니다.

Python
>>> a['name']
'pyth'

a[‘name’] 과 같은 결과임을 알 수 있습니다

Python
>>> print(a.get('no'))
None
>>> print(a['no'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'no'

기존 예처럼 기존에 a.get(‘name’) 과 a[‘name’] 은 ‘name’ 이라는 key 가 존재하기에 같은 결과를 반환 했지만 방금 예처럼 ‘no’ 라는 key 가 존재 하지 않을 경우에 get 함수를 사용했을 때는 None 이라고 거짓 이라는 결과를 반환하지만 a[‘no’] 라고 바로 없는 key를 호출 하였을 경우에는 오류를 발생하게 됩니다.

key가 없을 경우 디폴트 값 지정

Python
>>> a.get('no', 'hoohoo')
'hoohoo'

a 딕셔너리에는 ‘no’ key 가 존재하지 않기에 ‘hoohoo’ 라는 디폴트값을 리턴 해 줍니다.

key 가 딕셔너리 안에 존재하는 지 확인(in)

Python
>>> 'name' in a
True
>>> 'phone' in a
False

‘name’ 이라는 문자열이 a 라는 딕셔너리 안에 있는지 in 함수를 사용해 봤습니다. ‘name’ 은 key 로 존재하기에 True 라고 결과를 반환해줍니다. 반면 ‘phone’ 라는 문자열은 존재하지 않기에 False 를 반환해 줍니다.
in 은 key 가 존재하는지 확인 하기 위해 사용할 수 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
12. 파이썬 딕셔너리 관련 함수

Leave a Comment