📖 딕셔너리란?
- 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 |