튜플은 수정이 불가하기때문에 리스트로 변환 후 정렬
for문을 이용하면 튜플의 아이템을 자동으로 참조가능
studentsCnt = (1, 19), (2, 20), (3, 22), (4, 18), (5, 21)
for classNo, cnt in studentsCnt:
print(f'{classNo}학급 학생수: {cnt}')
⇊
1학급 학생수: 19
2학급 학생수: 20
3학급 학생수: 22
4학급 학생수: 18
5학급 학생수: 21
while문을 이용하면 다양한 방법으로 아이템 조회 가능
minScore = 60
scores = ('국어', 58), ('영어', 77), ('수학', 89), ('과학', 99), ('국사', 50)
n = 0
while n < len(scores):
if scores[n][1] < minScore:
print(f'과락 과목: {scores[n][0]}, 점수: {scores[n][1]}')
n += 1
minScore = 60
scores = ('국어', 58), ('영어', 77), ('수학', 89), ('과학', 99), ('국사', 50)
n = 0
while n < len(scores):
if scores[n][1] >= minScore:
n += 1
continue
print(f'과락 과목: {scores[n][0]}, 점수: {scores[n][1]}')
n += 1
⇊
과락 과목: 국어, 점수: 58
과락 과목: 국사, 점수: 50
키(key)와 값(value)를 이용하여 자료 관리
키key가 인덱스 역할을 함
**키는 직접 입력해 주어야 함**
키key는 중복되지 않아야 함. 값value은 중복 되어도 상관없음
students = {'s1': '홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은',}
딕셔너리는 키를 이용해서 값을 조회
존재하지 않는 키를 조회할시 에러 발생
students = {'s1':'홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은',}
print('students[\'s1\']: {}'.format(students['s1']))
⇊
students['s1']: 홍길동
students = {'s1':'홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은',}
print(students.get('s1'))
⇊
홍길동
print(students.get('s22'))
⇊
None
myInfo = {}
myInfo['이름'] = '박경진'
myInfo['전공'] = 'computer'
myInfo['메일'] = 'jin@naver.com'
myInfo['학년'] = 3
myInfo['주소'] = '대한민국 서울'
myInfo['취미'] = ['요리', '여행']
print(f'myInfo: {myInfo}')
⇊
myInfo: {'이름': '박경진', '전공': 'computer', '메일': 'jin@naver.com', '학년': 3, '주소': '대한민국 서울', '취미': ['요리', '여행']}
키 값이 중복이면 기존에 있던 밸류 값이 나중에 입력한 값으로 업데이트 됨
myInfo = {}
myInfo['이름'] = '박경진'
myInfo['전공'] = 'computer'
myInfo['메일'] = 'jin@naver.com'
myInfo['학년'] = 3
myInfo['주소'] = '대한민국 서울'
myInfo['취미'] = ['요리', '여행']
print(f'myInfo: {myInfo}')
myInfo['메일'] = 'jin@gmail.com'
print(f'myInfo: {myInfo}')
⇊
myInfo: {'이름': '박경진', '전공': 'computer', '메일': 'jin@naver.com', '학년': 3, '주소': '대한민국 서울', '취미': ['요리', '여행']}
myInfo: {'이름': '박경진', '전공': 'computer', '메일': 'jin@gmail.com', '학년': 3, '주소': '대한민국 서울', '취미': ['요리', '여행']}
factorialDic = {}
for i in range(11):
if i == 0:
factorialDic[i] = 1
else:
for j in range(1, (i + 1)):
factorialDic[i] = factorialDic[i - 1] * j
print(f'factorialDic: {factorialDic}')
⇊
factorialDic: {0: 1, 1: 1, 2: 2, 3: 6, 4: 24, 5: 120, 6: 720, 7: 5040, 8: 40320, 9: 362880, 10: 3628800}
#하루에 몸무게(kg)와 신장(m)이 각각 -0.3kg, +0.01m씩 변한다고 할떄, 30일 후의 몸무게와 신장의 값을 저장하고 BMI도 출력
myBodyInfo = {'이름':'gildong', '몸무게':83.0, '신장':1.8}
myBMI = myBodyInfo['몸무게'] / (myBodyInfo['신장'] ** 2)
print(f'myBodyInfo: {myBodyInfo}')
print(f'myBMI: {round(myBMI, 2)}')
date = 0
while True:
date += 1
myBodyInfo['몸무게'] = round((myBodyInfo['몸무게'] - 0.3), 2)
print('몸무게: {}'.format(myBodyInfo['몸무게']))
myBodyInfo['신장'] = round((myBodyInfo['신장'] + 0.001), 3)
print('신장: {}'.format(myBodyInfo['신장']))
myBMI = myBodyInfo['몸무게'] / (myBodyInfo['신장'] ** 2)
if date >= 30:
break
print(f'myInfoBody: {myBodyInfo}')
print(f'myBMI: {myBMI}')
⇊
myBodyInfo: {'이름': 'gildong', '몸무게': 83.0, '신장': 1.8}
myBMI: 25.62
몸무게: 82.7
신장: 1.801
몸무게: 82.4
신장: 1.802
몸무게: 82.1
신장: 1.803
몸무게: 81.8
신장: 1.804
몸무게: 81.5
신장: 1.805
몸무게: 81.2
신장: 1.806
몸무게: 80.9
신장: 1.807
몸무게: 80.6
신장: 1.808
몸무게: 80.3
신장: 1.809
몸무게: 80.0
신장: 1.81
몸무게: 79.7
신장: 1.811
몸무게: 79.4
신장: 1.812
몸무게: 79.1
신장: 1.813
몸무게: 78.8
신장: 1.814
몸무게: 78.5
신장: 1.815
몸무게: 78.2
신장: 1.816
몸무게: 77.9
신장: 1.817
몸무게: 77.6
신장: 1.818
몸무게: 77.3
신장: 1.819
몸무게: 77.0
신장: 1.82
몸무게: 76.7
신장: 1.821
몸무게: 76.4
신장: 1.822
몸무게: 76.1
신장: 1.823
몸무게: 75.8
신장: 1.824
몸무게: 75.5
신장: 1.825
몸무게: 75.2
신장: 1.826
몸무게: 74.9
신장: 1.827
몸무게: 74.6
신장: 1.828
몸무게: 74.3
신장: 1.829
몸무게: 74.0
신장: 1.83
myInfoBody: {'이름': 'gildong', '몸무게': 74.0, '신장': 1.83}
myBMI: 22.096807907073963
전체 key와 value를 조회 가능
meInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
ks=meInfo.keys()
print(f'ks: {ks}')
print(f'ks:{type(ks)}')
vs=meInfo.values()
print(f'vs: `{vs}')
print(f'vs:{type(vs)}')
items = meInfo.items()
print(f'items: `{items}')
print(f'items:{type(items)}')
⇊
ks: dict_keys(['이름', '메일', '학년'])
ks:<class 'dict_keys'>
vs: `dict_values(['홍길동', 'gildong@gmail.com', 3])
vs:<class 'dict_values'>
items: `dict_items([('이름', '홍길동'), ('메일', 'gildong@gmail.com'), ('학년', 3)])
items:<class 'dict_items'>
meInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
ks = meInfo.keys()
ks = list(ks)
print(f'ks: {ks}')
print(f'ks:{type(ks)}')
vs = meInfo.values()
vs = list(vs)
print(f'vs: `{vs}')
print(f'vs:{type(vs)}')
items = meInfo.items()
items = list(items)
print(f'items: `{items}')
print(f'items:{type(items)}')
⇊
ks: ['이름', '메일', '학년']
ks:<class 'list'>
vs: `['홍길동', 'gildong@gmail.com', 3]
vs:<class 'list'>
items: `[('이름', '홍길동'), ('메일', 'gildong@gmail.com'), ('학년', 3)]
items:<class 'list'>
meInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
ks = meInfo.keys()
for key in ks:
print(f'key: {key}')
for idx, key in enumerate(ks):
print(f'idx, key: {idx}, {key}')
print('------------------------------')
vs = meInfo.values()
for value in vs:
print(f'value: {value}')
for idx, key in enumerate(vs):
print(f'idx, key: {idx}, {value}')
print('------------------------------')
items = meInfo.items()
for item in items:
print(f'items: {item}')
for idx, key in enumerate(items):
print(f'idx, item: {idx}, {item}')
⇊
key: 이름
key: 메일
key: 학년
idx, key: 0, 이름
idx, key: 1, 메일
idx, key: 2, 학년
------------------------------
value: 홍길동
value: gildong@gmail.com
value: 3
idx, key: 0, 3
idx, key: 1, 3
idx, key: 2, 3
------------------------------
items: ('이름', '홍길동')
items: ('메일', 'gildong@gmail.com')
items: ('학년', 3)
idx, item: 0, ('학년', 3)
idx, item: 1, ('학년', 3)
idx, item: 2, ('학년', 3)
학생 시험점수가 60점 미만이면 'F(재시험)'으로 값을 변경하는 코드를 keys()이용하여 작성
scores = {'kor':88, 'eng':55, 'mat':85, 'sci':57, 'his':82}
print(f'scores: {scores}')
minScore = 60
fStr = 'F(재시험)'
fDic = {} #F맞은 과목만 모아놓은 딕셔너리
for key in scores:
if scores[key] < minScore:
scores[key] = fStr
fDic[key] = fStr
print(f'scores: {scores}')
print(f'fDic: {fDic}')
⇊
scores: {'kor': 88, 'eng': 55, 'mat': 85, 'sci': 57, 'his': 82}
scores: {'kor': 88, 'eng': 'F(재시험)', 'mat': 85, 'sci': 'F(재시험)', 'his': 82}
fDic: {'eng': 'F(재시험)', 'sci': 'F(재시험)'}
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
print(f'memInfo: {memInfo}')
del memInfo['메일']
print(f'memInfo: {memInfo}')
⇊
memInfo: {'이름': '홍길동', '메일': 'gildong@gmail.com', '학년': 3}
memInfo: {'이름': '홍길동', '학년': 3}
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
print(f'memInfo: {memInfo}')
returnValue = memInfo.pop('이름')
print(f'memInfo: {memInfo}')
print(f'returnValue: {returnValue}')
print(f'returnValue type: {type(returnValue)}')
returnValue = memInfo.pop('학년')
print(f'memInfo: {memInfo}')
print(f'returnValue: {returnValue}')
print(f'returnValue type: {type(returnValue)}')
⇊
memInfo: {'이름': '홍길동', '메일': 'gildong@gmail.com', '학년': 3}
memInfo: {'메일': 'gildong@gmail.com', '학년': 3}
returnValue: 홍길동
returnValue type: <class 'str'>
memInfo: {'메일': 'gildong@gmail.com'}
returnValue: 3
returnValue type: <class 'int'>
딕셔너리에 저장된 점수 중 최저 및 최고 점수를 삭제
scores = {'score1':8.9, 'score2':8.1, 'score3':8.5, 'score4':9.8, 'score5':8.8}
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
del scores[minScoreKey]
del scores[maxScoreKey]
print(f'scores:{scores}')
⇊
scores:{'score1': 8.9, 'score3': 8.5, 'score5': 8.8}
in, not in
키 존재 유무를 판단
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
print('이름' in memInfo)
print('메일' in memInfo)
print('학년' in memInfo)
print('name' not in memInfo)
print('mail' not in memInfo)
print('grade' not in memInfo)
⇊
True
True
True
True
True
True
len()
딕셔너리의 길이(아이템 개수)를 알 수 있음
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
print('len(memInfo): {}'.format(len(memInfo)))
⇊
len(memInfo): 3
clear()
모든 아이템 삭제
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3}
print('memInfo: {}'.format(memInfo))
memInfo.clear()
print('memInfo: {}'.format(memInfo))
⇊
memInfo: {'이름': '홍길동', '메일': 'gildong@gmail.com', '학년': 3}
memInfo: {}