제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지

제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.25]

김뚱입니다 2025. 4. 25. 22:47

[강의 요약]

[Part 03. 자료구조&알고리즘 with Python_ Ch 01. 자료구조] 강의 수강

32_딕셔너리부터 34_딕셔너리 추가까지 강의 수강하였음

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰                                        ] 40/100일 (40%)

토요일에 무려 응시료 8만원....인 자격증 시험이 있어서 최소한의 강의만 수강했음 ㅠ

글 작성하면서 들은 노래

 

 

 

[32_딕셔너리]

▶ 딕셔너리란?

키(key)와 값(value)의 쌍으로 데이터를 저장하는 비순차적 자료구조

리스트와 튜플과 달리 인덱스가 아닌 key로 접근함

# 기본 구조
dictName = {'key1': value1, 'key2': value2, ...}

key는 변경 불가능한(immutable) 값만 사용 가능하고

value에는 숫자, 문자열, 리스트, 튜플, 딕셔너리 등 다양한 타입 사용 가능함

 

 

▶ 코드 : 학생 명단 딕셔너리

students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규', 's4':'박승철', 's5':'김지은'}
print('students: {}'.format(students))
print('students type: {}'.format(type(students)))

[출력 결과]

students: {'s1': '홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은'}
students type: <class 'dict'>

 

 

▶ 코드 : 다양한 타입이 들어간 딕셔너리

memInfo = {
    '이름': '홍길동',
    '메일': 'gildong@gmail.com',
    '학년': 3,
    '취미': ['농구', '게임']
}
print('memInfo: {}'.format(memInfo))
print('memInfo type: {}'.format(type(memInfo)))

[출력 결과]

memInfo: {'이름': '홍길동', '메일': 'gildong@gmail.com', '학년': 3, '취미': ['농구', '게임']}
memInfo type: <class 'dict'>

 

 

▶ 코드 : 중첩 딕셔너리

student1 = {'이름': '홍길동', '메일': 'gildong@gmail.com', '학년': 3}
student2 = {'이름': '박찬호', '메일': 'chanho@gmail.com', '학년': 2}
student3 = {'이름': '이용규', '메일': 'yonggyu@gmail.com', '학년': 1}

studentInfo = {
    1: student1,
    2: student2,
    3: student3
}
print('studentInfo: {}'.format(studentInfo))
print('studentInfo type: {}'.format(type(studentInfo)))

[출력 결과]

studentInfo: {
  1: {'이름': '홍길동', '메일': 'gildong@gmail.com', '학년': 3},
  2: {'이름': '박찬호', '메일': 'chanho@gmail.com', '학년': 2},
  3: {'이름': '이용규', '메일': 'yonggyu@gmail.com', '학년': 1}
}
studentInfo type: <class 'dict'>

 

 

▶ 실습 코드 : 나의 정보를 딕셔너리로 표현

myInfo = {
    '이름': '박경진',
    '전공': 'computer',
    '메일': 'jin@naver.com',
    '학년': 3,
    '주소': '대한민국 서울',
    '취미': ['요리', '여행']
}
print('myInfo: {}'.format(myInfo))

[출력 결과]

myInfo: {
  '이름': '박경진',
  '전공': 'computer',
  '메일': 'jin@naver.com',
  '학년': 3,
  '주소': '대한민국 서울',
  '취미': ['요리', '여행']
}

 

 

 

[33_딕셔너리 조회]

▶ 코드 : 기본 딕셔너리 조회

students = {
    's1': '홍길동', 's2': '박찬호', 's3': '이용규',
    's4': '박승철', 's5': '김지은'
}

print('students[\'s1\']:{}'.format(students['s1']))
print('students[\'s5\']:{}'.format(students['s5']))

[출력 결과]

students['s1']:홍길동  
students['s5']:김지은

 

 

▶ 코드 : 리스트 값을 포함한 딕셔너리

memInfo = {'이름': '홍길동', '취미': ['농구', '게임', '여행']}

print(memInfo['이름'])
print(memInfo['취미'])

for h in memInfo['취미']:
    print(h)

for i, h in enumerate(memInfo['취미']):
    print('index:{} --> {}'.format(i, h))

[출력 결과]

홍길동  
['농구', '게임', '여행']  
농구  
게임  
여행  
index:0 --> 농구  
index:1 --> 게임  
index:2 --> 여행

 

 

▶ 코드 : 예외 발생 예시_존재하지 않는 key

students = {'s1':'홍길동', 's2':'박찬호'}
print(students['s6'])  # 오류 발생

[출력 결과]

KeyError: 's6'

 

 

▶ 코드 : get() 사용_안전한 조회 방식

students = {'s1':'홍길동', 's2':'박찬호'}

print(students.get('s2'))  # → 박찬호
print(students.get('s6'))  # → None (오류 아님)

[출력 결과]

박찬호  
None

 

 

▶ 실습 코드 : 나의 정보 조회 ([], get() 둘 다 사용)

myInfo = {
    '이름': '박경진',
    '전공': 'computer',
    '메일': 'jin@naver.com',
    '학년': 3,
    '주소': '대한민국 서울',
    '취미': ['요리', '여행']
}

# [] 방식
print('이름:', myInfo['이름'])
print('전공:', myInfo['전공'])
print('메일:', myInfo['메일'])

# get() 방식
print('이름:', myInfo.get('이름'))
print('주소:', myInfo.get('주소'))
print('취미:', myInfo.get('취미'))

[출력 결과]

이름: 박경진  
전공: computer  
메일: jin@naver.com  
이름: 박경진  
주소: 대한민국 서울  
취미: ['요리', '여행']

 

 

 

[34_딕셔너리 추가]

▶ 코드 : 기본 딕셔너리 추가 및 수정

myInfo = {}

myInfo['이름'] = '박경진'
myInfo['전공'] = 'computer'
myInfo['메일'] = 'jin@naver.com'
myInfo['학년'] = 3
myInfo['주소'] = '대한민국 서울'
myInfo['취미'] = ['요리', '여행']

print(f'myInfo : {myInfo}')

[출력 결과]

myInfo : {'이름': '박경진', '전공': 'computer', '메일': 'jin@naver.com', '학년': 3, '주소': '대한민국 서울', '취미': ['요리', '여행']}

 

 

▶ 위 코드 수정 예시

myInfo['메일'] = 'gyeongjin@naver.com'
print(f'myInfo : {myInfo}')

[출력 결과]

myInfo : {'이름': '박경진', '전공': 'computer', '메일': 'gyeongjin@naver.com', '학년': 3, '주소': '대한민국 서울', '취미': ['요리', '여행']}

 

 

▶ 실습 코드 : 사용자 입력으로 딕셔너리 만들기

studentInfo = {}

studentInfo['name'] = input('이름 입력: ')
studentInfo['grade'] = input('학년 입력: ')
studentInfo['mail'] = input('메일 입력: ')
studentInfo['addr'] = input('주소 입력: ')

print(f'studentInfo : {studentInfo}')

[입력]

이름 입력: 김철수  
학년 입력: 2  
메일 입력: chulsoo@gmail.com  
주소 입력: 서울 강남구

[출력 결과]

studentInfo : {'name': '김철수', 'grade': '2', 'mail': 'chulsoo@gmail.com', 'addr': '서울 강남구'}

 

 

▶ 실습 코드 : 팩토리얼 딕셔너리 만들기

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,
  ...
  10: 3628800
}

 

 

 

[나의 생각 정리]

오늘은 시간 관계상 코드가 왜 이렇게 작성되었을까? 고민하지 않고 정리만 했다.

딕셔너리도 많이 쓰이니까 클론 코딩하면서 복습하는 시간을 주말에 가지려 한다.

+ 백준 관련 문제 풀면서 손에 익히기

 

 

 

[적용점]

데이터 분석할 때와 코딩 테스트 문제 풀 때 유용할 것 같다.

 

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”