지난번 파이썬 딕셔너리 자료형에 이어 파이썬 딕셔너리 관련 함수에 대해 알아보겠습니다.
파이썬 딕셔너리 관련 함수들
딕셔너리를 내가 원하는 대로 사용하기 위해서는 딕셔너리 자체 함수를 알고 있어야 합니다.
Key 리스트(keys)
>>> 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 객체 사용방법
>>> for i in a.keys():
... print(i)
...
name
mobile
birth
리스트 사용법과 똑같지만, 리스트 고유 함수인 append, insert, pop, remove, sort 함수는 사용 할 수 없습니다.
그리고 파이썬 문법으로 for 문 다음에 오는 print 문은 반드시 들여쓰기를 적용 해야 합니다.
dict_keys 객체를 리스트로 변환
>>> list(a.keys())
['name', 'mobile', 'birth']
앞서 언급한 참고사항 에서 처럼 파이썬 3.0 이후 버전에서는 dict_keys 객체를 리스트로 변환하기 위해 list(딕셔너리.keys()) 라고 명령해주면 됩니다.
Value 리스트(values)
>>> a.values()
dict_values(['pyth', '010-1234-9999', '0403'])
딕셔너리의 key를 얻기 위해 a.keys() 라고 했듯이 마찬가지로 values 만 얻고 싶으면 valuse 함수를 호출하면 됩니다. 결과처럼 dict_values 객체를 리턴합니다.
Key, Value 쌍 얻기(items)
>>> a.items()
dict_items([('name', 'pyth'), ('mobile', '010-1234-9999'), ('birth', '0403')])
items 함수를 호출하면 Key 와 Value 를 쌍으로 묶은 튜플을 dict_items 객체로 반환하게 됩니다.
Key, Value 쌍 모두 지우기 (clear)
>>> a.clear()
>>> a
{}
clear 함수는 딕셔너리의 모든 요소들을 삭제합니다.
빈 딕셔너리는 {}로 표현 되는 걸 볼 수 있습니다.
Key 로 Value 얻기(get)
>>> a = {'name':'pyth', 'mobile':'010-1234-9999', 'birth': '0403'}
>>> a.get('name')
'pyth'
>>> a.get('mobile')
'010-1234-9999'
위의 예처럼 get(x) 라고 했을때 x Key에 대응하는 value 를 반환하게 됩니다.
>>> a['name']
'pyth'
a[‘name’] 과 같은 결과임을 알 수 있습니다
>>> 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가 없을 경우 디폴트 값 지정
>>> a.get('no', 'hoohoo')
'hoohoo'
a 딕셔너리에는 ‘no’ key 가 존재하지 않기에 ‘hoohoo’ 라는 디폴트값을 리턴 해 줍니다.
key 가 딕셔너리 안에 존재하는 지 확인(in)
>>> 'name' in a
True
>>> 'phone' in a
False
‘name’ 이라는 문자열이 a 라는 딕셔너리 안에 있는지 in 함수를 사용해 봤습니다. ‘name’ 은 key 로 존재하기에 True 라고 결과를 반환해줍니다. 반면 ‘phone’ 라는 문자열은 존재하지 않기에 False 를 반환해 줍니다.
in 은 key 가 존재하는지 확인 하기 위해 사용할 수 있습니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
