본문 바로가기
파이썬/통계분석

[파이썬 강의] 21. 딕셔너리 key의 특징

by 만다린망고 2021. 10. 7.
반응형

 

 

딕셔너리는 Key:Value 쌍이 원소인 자료구조입니다. 딕셔너리에는 아래와 같은 특징이 있습니다. 

 

1) Key에는 자료형과 튜플만 올 수 있음

2) Key는 중복이 불가능함
3) Value에는 자료형과 자료구조가 둘다 올 수 있음

4) Value는 중복이 가능함
5) 숫자 인덱싱 불가 (key를 이용한 value 접근은 가능)
6) Value만 수정 가능

7) 원소 삭제/추가 가능
8) 덧셈,곱셈 등 산술연산 불가

 

오늘은 1,2번 성질을 배워봅시다. 

 

딕셔너리의 key에는 자료형과 튜플만 사용 가능합니다. 숫자, 문자, 논리형이 올 수 있습니다. 튜플을 제외한 리스트 등의 자료구조는 사용이 불가합니다. 

 

key를 튜플로 정의해봅시다. 

 

>>> dic1={('김정빈','이에요'):75,'김정빈':56,'임호정':23}
>>> dic1
{('김정빈', '이에요'): 75, '김정빈': 56, '임호정': 23}

 

이번에는 리스트로 정의해봅시다. 

 

>>> dic1={['김정빈','이에요']:75,'김정빈':56,'임호정':23}
Traceback (most recent call last):
  File "<pyshell#195>", line 1, in <module>
    dic1={['김정빈','이에요']:75,'김정빈':56,'임호정':23}
TypeError: unhashable type: 'list'

 

위와 같이 오류가 발생합니다. 리스트가 unhashable 하기 때문에 안된다고 합니다. hashable 하지 않은게 문제인데 hashable 은 hash가 가능하다는 것입니다. 이를 이해하려면 hash가 뭔지 알아야 하는데 나중에 다루기로 하구요. hash가 가능하려면 '불변(immutable)'이어야 합니다. 딕셔너리의 Key 값으로는 불변 타입만 올 수 있습니다. 리스트의 경우 변경가능한 타입이므로, key값이 될 수 없습니다. 

 

또한 key 는 중복이 불가능합니다. key를 중복해서 정의해봅시다. 

 

>>> dic1={'김정빈':75,'김정빈':56,'임호정':23}
>>> dic1
{'김정빈': 56, '임호정': 23}

 

뒤에 정의된 김정빈만 입력됩니다. 만약 김정빈이 두명 있으면 어떡해야 할까요. 김정빈A, 김정빈B로 입력해야 합니다. 

 

>>> dic1={'김정빈A':75,'김정빈B':56,'임호정':23}
>>> dic1
{'김정빈A': 75, '김정빈B': 56, '임호정': 23}
반응형

댓글