[강의 요약]
[Part 03. 자료구조&알고리즘 with Python_ Ch 02. 자료구조 문제풀이] 강의 수강
49_[연습문제] 딕셔너리 (01)부터 53_[연습문제] 딕셔너리 (05)까지 강의 수강하였음
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ] 44/100일 (44%)
[49_[연습문제] 딕셔너리 (01)]
▶ 코드
subject = ['국어', '영어', '수학', '과학', '국사']
scores = {}
for s in subject:
score = input(s + ' 점수 입력: ')
scores[s] = score
print(f'과목별 점수 : {scores}')
[입력/출력]
국어 점수 입력: 90
영어 점수 입력: 85
수학 점수 입력: 88
과학 점수 입력: 92
국사 점수 입력: 80
과목별 점수 : {'국어': '90', '영어': '85', '수학': '88', '과학': '92', '국사': '80'}
참고로 int(input())이 아니므로 입력값은 모두 str로 저장된다.
▶ 코드
members = {
'urkpo':'0928^7$',
'xxayv':'%2*9$91',
'lsqvx':'!0%)&&4',
'heums':'%@3^0%3',
'uwcmc':'85236(&',
'iemwv':')8!36^&',
'sqblx':')^2)9!(',
'jbbpy':'67269*3',
'hjkwu':'$&@@#64',
'fvwwy':'82$%)31'
}
memID = input('ID 입력: ')
memPW = input('PW 입력: ')
if memID in members:
if members[memID] == memPW:
print('로그인 성공!!')
else:
print('비밀번호 확인!!')
else:
print('아이디 확인!!')
[3가지 출력 유형]
ID 입력: urkpo
PW 입력: 0928^7$
로그인 성공!!
ID 입력: urkpo
PW 입력: wrongpw
비밀번호 확인!!
ID 입력: wrongid
PW 입력: 0928^7$
아이디 확인!!
[50_[연습문제] 딕셔너리 (02)]
▶ 코드
dic = {}
for n in range(3, 11):
hap = 180 * (n - 2)
ang = int(hap / n)
dic[n] = [hap, ang]
print(dic)
[출력 결과]
{3: [180, 60], 4: [360, 90], 5: [540, 108], 6: [720, 120], 7: [900, 128], 8: [1080, 135], 9: [1260, 140], 10: [1440, 144]}
▶ 코드
dic = {}
for n1 in range(2, 11):
tempList = []
for n2 in range(1, n1+1):
if n1 % n2 == 0:
tempList.append(n2)
dic[n1] = tempList
print(dic)
[출력 결과]
{2: [1, 2], 3: [1, 3], 4: [1, 2, 4], 5: [1, 5], 6: [1, 2, 3, 6], 7: [1, 7], 8: [1, 2, 4, 8], 9: [1, 3, 9], 10: [1, 2, 5, 10]}
[51_[연습문제] 딕셔너리 (03)]
split(), enumerate()를 활용해 리스트를 딕셔너리로 변환할 수 있음
replace()를 통해 문자열 치환. 이건 얼마 전 자격증 시험에서도 나왔었는데 겨우 기억해서 풀었음
▶ 코드
aboutPython = '파이썬은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어이다.'
splitList = aboutPython.split()
print(splitList)
dic = {}
for idx, v in enumerate(splitList):
dic[idx] = v
print(dic)
[출력 결과]
['파이썬은', '1991년', '프로그래머인', '귀도', '반', '로섬이', '발표한', '고급', '프로그래밍', '언어이다.']
{0: '파이썬은', 1: '1991년', 2: '프로그래머인', 3: '귀도', 4: '반', 5: '로섬이', 6: '발표한', 7: '고급', 8: '프로그래밍', 9: '언어이다.'}
▶ 코드
words = {
'꺼지다': '가다',
'쩔다': '엄청나다',
'짭새': '경찰관',
'꼽사리': '중간에 낀 사람',
'먹튀': '먹고 도망',
'지린다': '겁을 먹다',
'쪼개다': '웃다',
'뒷담 까다': '험담하다'
}
txt = '강도는 서로 쪼개다, 짭새를 보고 빠르게 따돌리며 먹튀했다.'
keys = list(words.keys())
txtMod = ''
for key in keys:
if key in txt:
print('key: {}'.format(key))
print('words[{}]: {}'.format(key, words[key]))
txt = txt.replace(key, words[key])
print(txt)
[출력 결과]
key: 쪼개다
words[쪼개다]: 웃다
key: 짭새
words[짭새]: 경찰관
key: 먹튀
words[먹튀]: 먹고 도망
강도는 서로 웃다, 경찰관를 보고 빠르게 따돌리며 먹고 도망했다.
[52_[연습문제] 딕셔너리 (04)]
▶ 코드
members = {}
n = 1
while n < 3:
mail = input('메일 입력: ')
pw = input('비번 입력: ')
if mail in members:
print('이미 사용 중인 메일 계정입니다.')
continue
else:
members[mail] = pw
n += 1
for key in members.keys():
print(f'{key} : {members[key]}')
[입력/출력]
임의로 입력한 값임
메일 입력: user1@gmail.com
비번 입력: pass1
메일 입력: user2@gmail.com
비번 입력: pass2
user1@gmail.com : pass1
user2@gmail.com : pass2
▶ 코드
# 회원 삭제
while True:
delMail = input('삭제할 계정 입력: ')
if delMail in members:
delPw = input('비번 입력: ')
if members[delMail] == delPw:
del members[delMail]
print(f'{delMail}님 삭제 완료!')
break
else:
print('비번 확인 요망!')
else:
print('계정 확인 요망!')
for key in members.keys():
print(f'{key} : {members[key]}')
[입력/출력]
임의로 입력한 값임
삭제할 계정 입력: user1@gmail.com
비번 입력: wrongpass
비번 확인 요망!
삭제할 계정 입력: user1@gmail.com
비번 입력: pass1
user1@gmail.com님 삭제 완료!
user2@gmail.com : pass2
[53_[연습문제] 딕셔너리 (05)]
▶ 코드
students = {
'S21-0001': {
'이름': '최성훈',
'성구분': 'M',
'전공': '디자인',
'연락처': '010-1234-5678',
'메일': 'hun@gmail.com',
'취미': ['농구', '음악']
},
'S21-0002': {
'이름': '탁영우',
'성구분': 'M',
'전공': '바리스타',
'연락처': '010-5678-9012',
'메일': 'yeong@gmail.com',
'취미': ['축구']
},
'S21-0003': {
'이름': '황진영',
'성구분': 'W',
'전공': '음악',
'연락처': '010-9012-3456',
'메일': 'jin@gmail.com',
'취미': ['수영', '코딩']
}
}
for k1 in students.keys():
print('-' * 40)
print('회원번호 : {}'.format(k1))
student = students[k1]
for k2 in student.keys():
print('{} : {}'.format(k2, student[k2]))
[출력 결과]
----------------------------------------
회원번호 : S21-0001
이름 : 최성훈
성구분 : M
전공 : 디자인
연락처 : 010-1234-5678
메일 : hun@gmail.com
취미 : ['농구', '음악']
----------------------------------------
회원번호 : S21-0002
이름 : 탁영우
성구분 : M
전공 : 바리스타
연락처 : 010-5678-9012
메일 : yeong@gmail.com
취미 : ['축구']
----------------------------------------
회원번호 : S21-0003
이름 : 황진영
성구분 : W
전공 : 음악
연락처 : 010-9012-3456
메일 : jin@gmail.com
취미 : ['수영', '코딩']
▶ 위 코드 이어서 작성
memNo = input('조회할 회원번호를 입력하세요.: ')
print('{} : {}'.format(memNo, students[memNo]))
[입력]
조회할 회원번호를 입력하세요.: S21-0002
[출력 결과]
S21-0002 : {'이름': '탁영우', '성구분': 'M', '전공': '바리스타', '연락처': '010-5678-9012', '메일': 'yeong@gmail.com', '취미': ['축구']}
[나의 생각 정리]
딕셔너리는 key와 value를 한 쌍으로 관리하는 자료구조라 복잡한 데이터를 다룰 때 효율적임
.keys(), .values(), .items() 같은 기본 메서드를 다룰 줄 알아야 편함
[적용점]
딕셔너리를 잘 활용하면 코드 가독성과 효율성이 좋아짐
간단한 데이터베이스 역할 등을 파이썬 딕셔너리로 구현했을 때 그 효과를 느낄 수 있음
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.01] (1) | 2025.05.01 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.30] (0) | 2025.04.30 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.28] (0) | 2025.04.28 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.27] (0) | 2025.04.27 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.26] (0) | 2025.04.26 |