본문 바로가기

Language/Python

[Python] 딕셔너리, 딕셔너리 함수

728x90
반응형

딕셔너리

- "이름" = "홍길동", "생일" = "월~일" 등으로 구별할 수 있는 대응 관계를 나타내는 자료형
- 연관 배열(Associative array), 해시(Hash)
- 딕셔너리는 key와 Value를 한 쌍으로 갖는 자료형
- 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 key를 통해 Value를 얻음

 

딕셔너리 구조

딕셔너리명 = {key1:value1, key2:value2, key3:value3, ... }

- key와 value 쌍 여러 개가 { }로 둘러싸여 있음
- 요소는 key:value 형태로 이루어져 있고 콤마(,)로 구분
- key는 변하지 않는 값을 사용, value는 변하는 값과 변하지 않는 값 모두 사용

>>> a = {1:'hi'}
>>> a = {'a':[1, 2, 3]}    # value에 리스트도 넣을 수 있음

 

딕셔너리 쌍 추가하기

딕셔너리명[key] = value

>>> a = {1:'a'}
>>> a[2] = 'b'
>>> a
{1:'a', 2:'b'}
>>> a['name'] = 'pey'
>>> a
{1:'a', 2:'b', 'name':'pey'}

 

딕셔너리 요소 삭제하기

del 딕셔너리명[key]

del() 함수를 사용해서 del a[key]처럼 입력하면 지정한 key에 해당하는 {key : value} 쌍이 삭제

>>> a = {1:'a', 2:'b', 'name':'pay'}
>>> del a[1]
>>> a
{2:'b', 'name':'pay'}

 

딕셔너리를 사용하는 방법

- 딕셔너리에서 key 사용해 value 얻기  딕셔너리명[key]

>>> grade = {'pey' : 10, 'julliet' : 99}
>>> grade['pey']
10
>>> grade['julliet']
99
>>> a = {1:'a', 2:'b'}
>>> a[1]        # [ ] 안의 '1'은 인덱스가 아니라 key 값을 의미
'a'
>>> a[2]
'b'

 

딕셔너리 만들 때 주의할 사항

- 딕셔너리에서 key는 고유한 값이므로 중복되는 key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시

>>> a = {1:'a', 1:'b'}
>>> a
{1:'b'}

- key에 리스트를 쓸 수 없다
key 값은 key가 변하는 값인지 변하지 않는 값인지 판단
리스트는 그 값이 변할 수 있기 때문에 key로 쓸 수 없음

>>> a = {[1, 2] : 'hi'}
TypeError

 


딕셔너리 함수

사용형식: 딕셔너리명.함수()

 

keys() - key 리스트 만들기

- 딕셔너리의 key만 모아서 dict_keys 객체로 반환

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
>>> for k in a.keys():
...        print(k)
...
name
phone
birth

- 리스트의 append, insert, pop, remove, sort 함수는 수행할 수 없다
- dict_keys 객체를 리스트로 변환하려면

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

 

values() - value 리스트 만들기

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> a.values()
dict_values(['pey', '0119993323', '1118'])

 

items() - key, value 쌍 얻기

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> a.items()
dict_itmes([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

 

get() - key로 value 얻기

- get(x) 함수는 x라는 key에 대응되는 value를 반환
- a.get('name')은 a['name']을 사용했을 때와 동일한 결괏값을 반환

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'

- 존재하지 않는 key로 value를 얻고자 할 때
딕셔너리명[key]는 에러 발생, 딕셔너리명.get[key]는 None을 반환

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> print(a.get('nokey'))
None
>>> print(a['nokey'])
KeyError

- 딕셔너리 안에 찾으려는 key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> a.get('foo', 'bar')
'bar'

 

in - 해당 key가 딕셔너리 안에 있는지 조사하기

- key가 딕셔너리에 존재하면 True, 존재하지 않으면 False을 반환

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> 'name' in a
True
>>> 'email' in a
False

 

clear() - key:value 쌍 모두 지우기

>>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
>>> a.clear()
>>> a
{ }
728x90
반응형