Python

딕셔너리 자료형

JYES 2021. 7. 19. 22:14

연관 배열 (Associative array), 해시(Hash)

ex) 이름 = 홍길동, 생일 = 몇 월 며칠 등과 같이 대응 관계로 나타낼 수 있는 자료형

파이썬에서는 이러한 자료형을 딕셔너리라고 함

Key를 통해 Value를 얻음

 

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

각각의 요소는 Key : Value 형태로 이루어져 있고 쉽표(,)로 구분되어 있음

 

딕셔너리 쌍 추가하기

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

>>>a[2] = 'b'

>>>a

{1: 'a',  2: 'b'}

>>>a['name'] = 'pey'

>>>a

{1: 'a',  2: 'b', 'name': 'pey'}

>>>a[3]=[1,2,3]

>>>a

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

 

딕셔너리 요소 삭제하기

>>>del a[1]

>>>a

{2: 'b', 'name': 'pey', 3: [1,2,3]}

 

딕셔너리에서 Key 사용해 Value 얻기

>>>grade = {'pey': 10, 'julliet': 99, 1: 'a', 2: 'b'}

>>>grade['pey']

10

>>>grade['julliet']

99

>>> grade[1]
'a'
>>> grade[2]
'b'

 

딕셔너리 만들 때 주의사항

1. Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의.

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

2. Key에는 리스트는 쓸 수 없다는 점을 주의. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있음. 리스트는 그 값이 변할 수 있기 때문에 Key로 사용 불가. 하지만, 튜플은 Key로 사용 가능.

>>> a={[1,2]:'hi'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

 

딕서녀리 관련 함수

 

1. Key 리스트 만들기 (keys)

① a.keys() : 딕셔너리 a의 Key만을 모아서 dict_keys 객체를 돌려줌

>>> a={'name':'pey', 'phone':'0123456789', 'birth':'1111'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])

② dict_keys 객체 사용 예시: 리스트를 사용하는 것과 차이가 없지만, 리스트 고유의 append, insert, pop, remove, sort 함수 수행 불가

>>> for k in a.keys():
...     print(k)                             # 들여쓰기 하지 않으면 오류 발생함
...
name
phone
birth

③ dict_keys 객체를 리스트로 변환하려면 다음과 같이 수행

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

 

2. Value 리스트 만들기 (values)

value 함수를 호출하면 dict_values 객체를 돌려줌

>>> a.values()
dict_values(['pey', '0123456789', '1111'])

 

3. Key, Value 쌍 얻기 (items)

items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려줌

>>> a.items()
dict_items([('name', 'pey'), ('phone', '0123456789'), ('birth', '1111')])

 

4. Key:Value 쌍 모두 지우기 (clear)

clear 함수는 딕셔너리 안의 모든 요소를 삭제함.

빈 리스트를 [], 빈 튜플을()로 표현하는 것과 마찬가지로 빈 딕셔너리도 {}로 표현

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

 

5. Key로 Value 얻기 (get)

get(x) 함수는 x라는 Key에 대응되는 Value를 돌려줌

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

존재하지 않는 키로 값을 가져오려고 할 경우 Key 오류를 발생시키고 None을 돌려준다는 차이가 있음

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

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

akey에 해당하는 값이 없으므로 디폴트 값인 ''vdefault'를 돌려줌

>>> a.get('akey','vdefault')
'vdefault'

 

6. 해당 Key가 딕셔너리 안에 있는지 조사하기 (in)

'name' 문자열은 a 딕셔너리의 Key 중 하나이므로 참을 돌려줌

'email'은 a 딕셔너리 안에 존재하지 않는 Key이므로 거짓을 돌려줌

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

'Python' 카테고리의 다른 글

DATA TYPE  (0) 2019.12.23
용어 정리중  (0) 2019.12.20