본문 바로가기
Python/02. 파이썬의 기초, 자료형

02-5 딕셔너리 자료형

by gamdong2 2024. 6. 27.

 

📖 딕셔너리란?

  • Key · Value를 한 쌍으로 가지는 자료형 ex : Key - baseball / Value - 야구
  • 딕셔너리는 Key를 통해 Value를 얻음 리스트·튜플처럼 순차적으로 해당 요솟값을 구하지x
  • 즉, baseball이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이x, baseball이라는 단어가 있는 곳만 펼쳐봄

 

1. 딕셔너리는 어떻게 만들까?

1) 딕셔너리 형태

{Key1: Value1, Key2: Value2, Key3: Value3, ...}
>>> dic = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
#Key는 각각 'name', 'phone', 'birth'
#Value는 각각 'pey', '010-9999-1234', '1118'

>>> a = {1: 'hi'}
#Key는 정숫값 1
#Value는 문자열 'hi'

>>> a = {'a': [1, 2, 3]}
#Key는 'a'
#Value는 리스트 [1, 2, 3]

 

 

2. 딕셔너리 쌍 추가 · 삭제

1) 딕셔너리 쌍 추가하기

>>> a = {1: 'a'}
>>> a[2] = 'b'   #딕셔너리 a에 Key·Value가 각각 2·'b'인 {2: 'b'} 딕셔너리 쌍이 추가됨
>>> a
{1: 'a', 2: 'b'}

>>> a['name'] = 'pey'   #딕셔너리 a에 {'name': 'pey'} 쌍이 추가됨
>>> a
{1: 'a', 2: 'b', 'name: 'pey'}

>>> a[3] = [1, 2, 3]   #딕셔너리 a에 {3: [1, 2, 3]} 쌍이 추가됨
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

2) 딕셔너리 요소 삭제하기

>>> del a[1]   #Key가 1인 Key: Value 쌍 삭제
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

 

 

3. 딕셔너리 사용 방법

ex : 4명의 사람이 있고 각자의 특기를 표현할 때 딕셔너리가 유용하게 쓰인다(문자열로는 표현 까다로움)

{"김연아": "피겨스케이팅", "류현진": "야구", "손흥민": "축구", "정채윤": "코딩천재"}

 

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

>>> 딕셔너리 변수 이름[Key]
Value 반환
=====Ex 1=====
>>> grade = {'pey': 10, 'julliet': 99}   #grade 변수에 {} 딕셔너리를 대입
>>> grade['pey']   #Key가 'pey'인 딕셔너리의 Value를 반환
10
>>> grade['julliet']   #Key가 'julliet'인 딕셔너리의 Value를 반환
99

=====Ex 2=====
>>> a = {1: 'a', 2: 'b'}
>>> a[1]   #딕셔너리 변수's []안의 숫자 1은 두 번째 요소(=리스트 ・ 듀플의 a[1])를 나타내는 것이x. Key에 해당하는 1을 나타냄
'a'
>>> a[2]
'b'

 

 

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

 

① 중복되는 Key 값 설정시, 하나만 적용됨(나머지는 무시)

>>> a = {1: 'a', 1: 'b'}   #1이라는 Key 값이 중복으로 사용됨
>>> a
{1: 'b'}.  #1: 'a' 쌍이 무시됨

 

② Key에 리스트가 올 수 없음(튜플은 올 수 o)

* Key에는 변하지 않는 값만 올 수 있음. 리스트는 그 값이 변할 수 있기 때문에 Key로 사용할 수 x

* Value에는 변하지 않는 값이든, 변하는 값이든 다 올 수 o

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

 

 

 

4. 딕셔너리 관련 함수

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

>>> 딕셔너리 변수 이름.keys()
dict_keys([])    ;그 딕셔너리의 Key만을 모아 dict_keys([]) 객체를 리턴
>>> a = {'name': 'pey', 'phone': '010-1234-5678', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])   #딕셔너리 a의 Key만을 모아 dict_keys 객체를 리턴

=====dict_keys 객체는 리스트를 사용하는 것과 별 차이x, BUT 리스트 고유의 append, insert, pop, remove, sort 함수는 수행할 수 x=====
>>> for k in a.keys():
...    print(k)
...
name
phone
birth

=====dict_keys 객체를 리스트로 변환=====
>>> list(a.keys())
['name', 'phone', 'birth']

 

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

>>> 딕셔너리 변수 이름.values()
dict_values([])    ;그 딕셔너리의 Value만을 모아 dict_values([]) 객체를 리턴
>>> a.values()
dict_values(['pey', '010-1234-5678', '1118'])

 

3) Key, Value 쌍 얻기 (items)

>>> 딕셔너리 변수 이름.items()
dict_items([])    ;그 딕셔너리의 Key & Value 쌍을 튜플로 묶은 값을 dict_items([]) 객체로 리턴
>>> a.items()
dict_items([('name', 'pey'), ('phone', '010-1234-5678'), ('birth', '1118')])

 

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

>>> a.clear()   #clear 함수 : 딕셔너리 안의 모든 요소를 삭제
>>> a
{}   #빈 리스트를 [], 빈 튜플을 ()로 표현하는 것과 마찬가지로, 빈 딕셔너리도 {}로 표현됨

 

5) Key로 Value 얻기 (get)

>>> 딕셔너리 변수 이름.get(x)
x라는 Key에 대응되는 Value를 리턴; a.get(x) 결과값 = a[x] 결과
>>> a = {'name': 'pey', 'phone': '010-1234-5678', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'010-1234-5678'
*[차이점] 존재하지 않는 Key를 a.get()에 입력한 경우 'None'을 리턴 / 존재하지 않는 Key를 a[]에 입력한 경우 오류 발생
>>> a = {'name': 'pey', 'phone': '010-1234-5678', 'birth': '1118'}
>>> print(a.get('nokey'))
None
>>> print(a['nokey'])
Error

=====딕셔너리 안에 찾으려는 Key가 없을 경우, 미리 정해둔 디폴트 값을 대신 가져오게 하기; get(x, '디폴트 값')=====
>>> a.get('nokey', 'foo')
'foo'   #딕셔너리 a에는 'nokey'에 해당하는 Key가 없음. ∴ 디폴트 값인 'foo'를 리턴​

 

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

>>> a = {'name': 'pey', 'phone': '010-1234-5678', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False

 

 

 

 

 

출처 : ⎡Do it! 점프 투 파이썬 (박응용)

'Python > 02. 파이썬의 기초, 자료형' 카테고리의 다른 글

02-7 불 자료형  (0) 2024.06.27
02-6 집합 자료형  (0) 2024.06.27
02-4 튜플 자료형  (0) 2024.06.25
02-3 리스트 자료형  (0) 2024.06.25
02-2-4 문자열 관련 함수들  (0) 2024.06.24