본문 바로가기

Study_note(zb_data)/Python

스터디 노트 (자료구조 27~38)_0720

📌 딕셔너리란? (Dictionary)

출처 : 제로베이스 데이터 스쿨

  • key, value를 이용하여 자료를 관리한다.
  • '{}'를 이용하여 선언, '키:값'의 형태로 아이템을 정의한다.

📌 딕셔너리 조회

students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규', 's4':['박세리', '박공주']}

print(students['s1'])
print(students['s2'])
print(students['s3'])
print(students['s4'])
print(students['s4'][0])
print(students['s4'][1])
print()
print(students.get('s1'))
print(students.get('s2'))
print(students.get('s3'))
print(students.get('s4'))
print(students.get('s5'))
>>
홍길동
박찬호
이용규
['박세리', '박공주']
박세리
박공주

홍길동
박찬호
이용규
['박세리', '박공주']
None

📌 딕셔너리 추가

factorialDic = {}
result = 1

for i in range(11):
    if i == 0 :
        factorialDic[i] = 1

    else:
        for j in range(i, i+1):
            result *= j
            factorialDic[i] = result

print('factorialDic : {}'.format(factorialDic))
>>
factorialDic : {0: 1, 1: 1, 2: 2, 3: 6, 4: 24, 5: 120, 6: 720, 7: 5040, 8: 40320, 9: 362880, 10: 3628800}
factorialDic = {}

for i in range(11):
    if i == 0 :
        factorialDic[i] = 1

    else:
        for j in range(i, i+1):
            factorialDic[i] = factorialDic[i-1] * j

print('factorialDic : {}'.format(factorialDic))
print(factorialDic[10])
>
factorialDic : {0: 1, 1: 1, 2: 2, 3: 6, 4: 24, 5: 120, 6: 720, 7: 5040, 8: 40320, 9: 362880, 10: 3628800}
3628800

📌 딕셔너리 수정

  • 딕셔너리이름[키(key)] = 값 (value) 형태로 아이템을 수정

출처 : 제로베이스 데이터 스쿨

#학생의 시험 점수가 60점 미만이면 'F(재시험)'으로 값을 변경해보자.
scores = {'국어':88, '영어':55, '수학':85, '과학':57, '국사':82}
print(scores)
fail = 'F(재시험)'
minScore = 60
if scores['국어'] < minScore: scores['국어'] = fail
if scores['영어'] < minScore: scores['영어'] = fail
if scores['수학'] < minScore: scores['수학'] = fail
if scores['과학'] < minScore: scores['과학'] = fail
if scores['국사'] < minScore: scores['국사'] = fail
print(scores)
>>>>
{'국어': 88, '영어': 55, '수학': 85, '과학': 57, '국사': 82}
{'국어': 88, '영어': 'F(재시험)', '수학': 85, '과학': 'F(재시험)', '국사': 82}
myBodyInfo = {'이름':'gildong', '몸무게':83.0, '신장':1.8}
myBMI = myBodyInfo['몸무게'] / (myBodyInfo['신장']**2)
print(f'myBodyInfo : {myBodyInfo}')
print(f'myBMI : {round(myBMI, 2)}')

date = 1

while date <= 30:
    myBodyInfo['몸무게'] = round(myBodyInfo['몸무게'] - 0.3, 2)
    print('{}일차 몸무게 : {}kg'.format(date, myBodyInfo['몸무게']))
    myBodyInfo['신장'] = round(myBodyInfo['신장'] +  0.001, 3)
    print('{}일차 신장 : {}m'.format(date, myBodyInfo['신장']))
    date += 1

print(f'myBodyInfo : {myBodyInfo}')
print(f'myBMI : {round(myBMI, 2)}')
>>>>
myBodyInfo : {'이름': 'gildong', '몸무게': 83.0, '신장': 1.8}
myBMI : 25.62
1일차 몸무게 : 82.7kg
1일차 신장 : 1.801m
2일차 몸무게 : 82.4kg
2일차 신장 : 1.802m
3일차 몸무게 : 82.1kg
3일차 신장 : 1.803m
4일차 몸무게 : 81.8kg
4일차 신장 : 1.804m
5일차 몸무게 : 81.5kg
5일차 신장 : 1.805m
6일차 몸무게 : 81.2kg
6일차 신장 : 1.806m
7일차 몸무게 : 80.9kg
7일차 신장 : 1.807m
8일차 몸무게 : 80.6kg
8일차 신장 : 1.808m
9일차 몸무게 : 80.3kg
9일차 신장 : 1.809m
10일차 몸무게 : 80.0kg
10일차 신장 : 1.81m
11일차 몸무게 : 79.7kg
11일차 신장 : 1.811m
12일차 몸무게 : 79.4kg
12일차 신장 : 1.812m
13일차 몸무게 : 79.1kg
13일차 신장 : 1.813m
14일차 몸무게 : 78.8kg
14일차 신장 : 1.814m
15일차 몸무게 : 78.5kg
15일차 신장 : 1.815m
16일차 몸무게 : 78.2kg
16일차 신장 : 1.816m
17일차 몸무게 : 77.9kg
17일차 신장 : 1.817m
18일차 몸무게 : 77.6kg
18일차 신장 : 1.818m
19일차 몸무게 : 77.3kg
19일차 신장 : 1.819m
20일차 몸무게 : 77.0kg
20일차 신장 : 1.82m
21일차 몸무게 : 76.7kg
21일차 신장 : 1.821m
22일차 몸무게 : 76.4kg
22일차 신장 : 1.822m
23일차 몸무게 : 76.1kg
23일차 신장 : 1.823m
24일차 몸무게 : 75.8kg
24일차 신장 : 1.824m
25일차 몸무게 : 75.5kg
25일차 신장 : 1.825m
26일차 몸무게 : 75.2kg
26일차 신장 : 1.826m
27일차 몸무게 : 74.9kg
27일차 신장 : 1.827m
28일차 몸무게 : 74.6kg
28일차 신장 : 1.828m
29일차 몸무게 : 74.3kg
29일차 신장 : 1.829m
30일차 몸무게 : 74.0kg
30일차 신장 : 1.83m
myBodyInfo : {'이름': 'gildong', '몸무게': 74.0, '신장': 1.83}
myBMI : 25.62

📌 keys()와 values()

출처 : 제로베이스 데이터 스쿨

scores = {'국어':88, '영어':55, '수학':85, '과학':57, '국사':82}
print(f'scores : {scores}')
print(f'scores : {scores.keys()}')
print(f'scores : {scores.values()}')

fStr = 'F(재시험)'
minScore = 60
fDic = {}

for key in scores.keys(): #key에 각 과목이름을 할당
    if scores[key] < minScore: #scores[key] = 점수를 표현
        scores[key] = fStr #과락 과목은 점수 대신 fStr 값으로 대체
        fDic[key] = fStr #과락 과목만 추가

print()
print(f'scores : {scores}')
print(f'fDic : {fDic}')

>>
scores : {'국어': 88, '영어': 55, '수학': 85, '과학': 57, '국사': 82}
scores : dict_keys(['국어', '영어', '수학', '과학', '국사'])
scores : dict_values([88, 55, 85, 57, 82])

scores : {'국어': 88, '영어': 'F(재시험)', '수학': 85, '과학': 'F(재시험)', '국사': 82}
fDic : {'영어': 'F(재시험)', '과학': 'F(재시험)'}

📌 딕셔너리 del, pop으로 아이템 삭제

출처 : 제로베이스 데이터 스쿨

scores = {'score1' : 8.9, 'score2' : 8.1, 'score3' : 8.5, 'score4' : 9.8, 'score5' : 8.8}
print(scores)
minScore = 10; minScoreKey = ''
maxScore = 0; maxScoreKey = ''

for key in scores.keys():

    if scores[key] < minScore:
        minScore = scores[key]
        minScoreKey = key

    if scores[key] > maxScore:
        maxScore = scores[key]
        maxScoreKey = key

scores.pop(minScoreKey)
scores.pop(maxScoreKey)

print(scores)

📌 딕셔너리의 유용한 기능

  • in, not in
    • 키의 존재 유/무를 판단한다.
  • len()
    • 딕셔너리의 길이를 알 수 있다.
  • clear()
    • 모든 아이템을 삭제한다

출처 : 제로베이스 데이터 스쿨