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

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. 파이썬 딕셔너리 관련 함수

11. 파이썬 딕셔너리 자료형

11. 파이썬 딕셔너리 자료형

파이썬 딕셔너리 의미

딕셔너리의 사전적 의미는 사전이라는 뜻입니다.
이름 = 스마트, 나이 = 20살. 이런식으로 대응 관계를 나타내는 자료형이라고 보시면 됩니다.
이를 연관 배열(Associative array) 또는 해시(Hash)라고도 합니다.

파이썬 딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소의 값을 구하는게 아니라
key를 통해 Value 값을 얻습니다.
city 라는 단어의 뜻을 찾기 위해 전체 내용을 처음부터 끝까지 찾아보는 것이 아니라 city라는 단어가 있는곳을 바로 찾아가는것입니다.

딕셔너리 만들기

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

딕셔너리의 각각의 요소는 Key:Value 의 형태로 이루어져 있고, 쉼표로 구분됩니다.

>>> dic = {'name':'pey', 'phone':'010-1234-9999', 'birth':'0402'}

위의 예에서 key는 각각 ‘name’, ‘phone’, ‘birth’ 가 되며, 각각의 key 에 해당하는 Value는 ‘pey’, ‘010-1234-9999’, ‘0402’ 가 됩니다.

Python
>>> a = {1: 'hello'}
>>> b = {'a': [1, 2, 3]}

위처럼 key로 정수값 1, Value 로 문자열 ‘hello’를 입력받았습니다.
b처럼 key ‘a’ 에 리스트 [1, 2, 3] 을 넣을수도 있습니다.

딕셔너리 쌍 추가, 삭제

딕셔너리 쌍 추가

Python
>>> a = {1: 'p'}
>>> a[3] = 'y'
>>> a
{1: 'p', 3: 'y'}

key 1 에 value ‘p’ 인 딕셔너리 a 에 key 3 인 value ‘y’가 추가 되었습니다.

Python
>>> a['name'] = 'py'
>>> a
{1: 'p', 3: 'y', 'name': 'py'}

딕셔너리 a에 {‘name’:’py’} 쌍이 추가 되었습니다.

Python
>>> a[5] = [2, 4, 6]
>>> a
{1: 'p', 3: 'y', 'name': 'py', 5: [2, 4, 6]}

key 5에 리스트 vlaue [2, 4, 6] 의 쌍이 또 추가 되었습니다.

딕셔너리 요소 삭제

Python
>>> del a[1]
>>> a
{3: 'y', 'name': 'py', 5: [2, 4, 6]}

기존 딕셔너리 a 에서 key 1의 value ‘p’ 쌍이 삭제되었습니다.
딕셔너리를 삭제할때 del a[key]를 입력해주면 딕셔너리 a에서 key 에 해당하는 쌍이 삭제가 됩니다.

딕셔너리 사용법

예를 들어 사람이름과 특기를 한쌍으로 표현한다면 딕셔너리를 사용하는게 간편합니다

딕셔너리에서 key 사용해 value 값 얻기

Python
>>> jumsoo = {'gpt': 20, 'romio': 90}
>>> jumsoo['gpt']
20
>>> jumsoo['romio']
90

기존 리스트나 튜플, 문자열에서는 요소의 값을 구하고자 할때 인덱싱이나 슬라이싱 방법을 사용합니다.
그에 비해 딕셔너리는 바로 key를 사용해 value 를 구합니다.
key ‘gpt’의 value 는 20, key ‘romio’의 value 는 90 을 반환합니다
위처럼 딕셔너리변수이름[key] 를 사용하면 key 의 value 값을 가져올 수 있습니다.

Python
>>> a = {1:'p', 2:'y'}
>>> a[1]
'p'
>>> a[2]
'y'

딕셔너리 a 에는 {1:’p’, 2:’y’} 라는 key와 value 가 있습니다.
a[1]이라고 했을때 리스트나 튜플에서는 a의 1번째 리스트나 튜플에 있는 값을 가지고 오지만
딕셔너리에서는 a의 key 1 에 해당하는 value 를 가지고 옵니다

Python
>>> a = {'p':1, 'y':2}
>>> a['p']
1
>>> a['y']
2

딕셔너리 a 에 key ‘p’, ‘y’와 이에 대응하는 value 1, 2를 넣어봤습니다.
key ‘p’, ‘y’를 이용해 해당하는 value값은 1과 2를 반환합니다.

딕셔너리 만들때 주의할 점

딕셔너리에서 key는 고유한 값입니다. key값이 중복된다면 하나를 제외한 나머지는 모두 무시됩니다

Python
>>> a = {1:'p', 1:'y'}
>>> a
{1: 'y'}

위의 예처럼 key 값이 중복될 경우 딕셔너리에서는 어떤 값을 가지고 올지 알 수가 없어집니다.
그리고 key값에 리스트 자료형은 사용할수가 없습니다. 이유는 리스트는 변할수 있기때문입니다.
반면 튜플은 변하지 않는 속성을 가지고 있어 딕셔너리의 key로 사용할수가 있습니다.

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