🔍 딕셔너리(Dictionary)
- key와 value를 이용하여 자료를 관리하며, {} 로 선언한다.
- key와 value에는 숫자, 문자(열), 논리형 뿐만 아니라 컨테이너 자료형도 올 수있다.
- 단 key에 immutable(변경불가)값은 올 수 있지만, mutable 값은 올 수 없다.
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
cf. immutable & mutable
immutable : 수정 불가능한 객체. ex) 정수, 실수, 문자열, 튜플
mutable : 수정 가능한 객체. ex) 리스트와 딕셔너리
🗝 딕셔너리 조회
- key를 이용하여 value를 조회
- 존재하지 않은 키로 조회 시 에러 발생
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
print(students['s1']) → '김형식'
1) get()
- get()함수를 이용하여 value 조회 가능
- get()은 key 가 없어도 에러가 나지 않는다.
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
students.get('s4') → '유재석'
students.get('s7') → None
2) keys()
- key만 뽑아 볼 수 있다.
- 리스트와 비슷한 구조(iterable). 타입은 'dict_keys'
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
ks = students.keys()
→ dict_keys(['s1', 's2', 's3', 's4', 's5'])
3) values()
- value만 가져올 수 있다.
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
vs = students.values()
→ dict_values(['김형식', '김종국', '박중호', '유재석', '강호동'])
4) items()
- 하나하나의 아이템(key, value)이 튜플로 반환된다.
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
items = students.items()
→ dict_items([('s1', '김형식'), ('s2', '김종국'), ('s3', '박중호'), ('s4', '유재석'), ('s5', '강호동')])
tip) list()를 사용하면 list로 변환할 수 있다.
ks = list(ks)
vs = lsit(vs)
items = list(items) → items : list / item(key&value) : tuple
5) for문을 이용한 조회
- for문을 이용하여 전체 딕셔너리의 key와 value 조회가 가능하다.
- 가장 많이 쓰임
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
for key in students.keys():
print(f'{key}:{students[key]}')
→ s1:김형식 s2:김종국 s3:박중호 s4:유재석 s5:강호동
🗝 딕셔너리 추가
- dic[key] = value 의 형태로 추가 가능
myStudent = {}
myStudent['name'] = 'david' → myStudent = {'name':'david'}
factoDic = {}
for i in range(11):
if i == 0:
factoDic[i] = 1
else:
for j in range(1,i+1):
factoDic[i] = factoDic[i-1]*j
print(f'factoDic = {factoDic}')
tip) key 값이 같을 경우, 아이템이 변경될 수 있다.
🗝 딕셔너리 수정
- dic[key] = value 의 형태로 수정 가능
myStudent = {}
myStudent['name'] = 'david' → myStudent = {'name':'david'}
myStudent['name'] = 'kevin' → myStudent = {'name':'kevin'}
🗝 딕셔너리 삭제
1) del
- del과 key를 이용하여 item 삭제 가능
scores = {'kor':88, 'eng':59, 'mat':85, 'sci':57, 'his':82}
delScore = ['kor','sci']
for item in delScore:
if item in scores.keys():
del scores[item]
2) pop()
- pop()과 key를 이용하여 item 삭제 가능
- del과는 달리 pop()는 함수이기에 value값을 반환할 수 있다.
students = {'s1':'김형식', 's2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
returnD = students.pop('s1')
students = {'s2':'김종국', 's3':'박중호', 's4':'유재석', 's5':'강호동' }
returnD = '김형식'
scores = {'kor':88, 'eng':59, 'mat':85, 'sci':57, 'his':82}
minScore = 100; maxScore = 0
minScoresKey = ""; maxScoresKey = ""
fData = {}
for key in scores.keys():
if scores[key] < minScore:
minScore = scores[key]
minScoresKey = key
if scores[key] > maxScore:
maxScore = scores[key]
maxScoresKey = key
fData[minScoresKey] = scores.pop(minScoresKey)
fData[maxScoresKey] = scores.pop(maxScoresKey)
print(scores)
print(fData)
🗝 그 외 기능들
1) in, not in
- key의 존재 유무 판단. True/False로 반환
2) len()
- 딕셔너리의 길이(아이템 개수)를 알 수 있다.
3) clear
- 딕셔너리 안의 모든 아이템 삭제
'Python > Python 기초' 카테고리의 다른 글
[파이썬 기초] 알고리즘 - 정렬 (0) | 2022.05.06 |
---|---|
[파이썬 기초] 알고리즘 - 검색,순위 (0) | 2022.05.06 |
[파이썬 기초] 튜플(Tuple) (0) | 2022.05.03 |
[파이썬 기초] 리스트(list) (0) | 2022.05.02 |
[파이썬 기초] return과 print의 차이 (0) | 2022.04.30 |