파이썬 문법 중 dictionary와 제어문을 위주로 강의가 진행되었다. 정확히 알고 있는 내용은 생략하고, 조금이라도 헷갈리거나 새로 알게된 부분만 기록하려고 한다.
학습 내용
1. 자료형 - dictionary
2. 조건문 match
1. 자료형 - dictionary
딕셔너리란?
키(key)와 값(value)의 쌍으로 구성된 자료형(데이터 구조)로, 키를 통해 값을 찾을 수 있으므로 매우 빠른 조회 성능을 보여준다. 연관 배열(associative array) 또는 해시(hash)라고도 한다.
딕셔너리의 특징
- 키(key)와 값(value)의 쌍으로 구성된다.
사전에서 단어를 찾아 뜻을 확인하는 것처럼, Dictionaries에서 키를 사용하여 해당 값을 손쉽게 찾고 활용할 수 있다.
ohgiraffers = {
'tiger' : 'langChain',
'Squirrel' :'JPA',
'Bear':'Python',
'Gorilla':'Spring'
}
print(ohgiraffers) # {'tiger': 'langChain', 'Squirrel': 'JPA', 'Bear': 'Python', 'Gorilla': 'Spring'}
print(ohgiraffers['tiger']) # langChain
print(ohgiraffers['Squirrel']) # JPA
2. 키는 고유해야 하며 불변(immutable)한 데이터 타입이어야 한다.
각 키는 유일하게 존재해야 하므로, 동일한 키로 여러 값을 저장할 수 없다.
- 만약 중복 키로 값을 입력하면, 기존 값을 덮어쓴다.
- 이러한 특징은 데이터 검색 및 관리의 효율성을 높여준다.
key로 가변 자료형(리스트, 딕셔너리)는 사용할 수 없고, 기본 자료형이나 불변 자료형(튜플)은 사용할 수 있다
ohgiraffers = {
'tiger':'langChain',
'Squirrel':'JPA',
'Bear':'Python',
'Gorilla':'Spring',
"Squirrel":"MyBatis"
}
print(ohgiraffers['Squirrel']) # MyBatis
# invalid_key_teacher = {["name", "team"] : 'bear.ohgiraffer'} # Error 발생
valid_key_dic = {("name", "team") : 'bear.ohgriaffers'}
print(valid_key_dic[("name", "team")]) # bear.ohgriaffers
3. Dictionaries는 가변적인 자료구조이다.
- 딕셔너리는 가변적인 자료구조로, Dictionaries 생성 후에도 키-값 쌍을 추가/삭제/수정할 수 있다.
- 이는 상황에 따라 데이터를 동적으로 변경해야 하는 경우 유용하게 활용될 수 있다.
ohgiraffers = {
'tiger' : 'langChain',
'Squirrel' :'JPA',
'Bear':'Python',
'Gorilla':'Spring'
}
print(ohgiraffers['tiger']) # langChain
ohgiraffers['tiger'] = 'java'
print(ohgiraffers['tiger']) # java
4. 빠른 조회와 수정이 가능하다.
딕셔너리는 해시 테이블을 사용하여 구현되므로, 평균적으로 O(1)의 시간 복잡도로 항목을 조회하고 수정할 수 있다.
5. del 키워드를 이용해 딕셔너리를 삭제할 수 있다.
del ohgiraffers
# print(ohgiraffers) # Error 발생
6. in 키워드를 사용하여 key 값의 존재 여부를 확인할 수 있다.
ohgiraffers = {
'tiger' : 'langChain',
'Squirrel' :'JPA',
'Bear':'Python',
'Gorilla':'Spring'
}
print('tiger' in ohgiraffers) # True
추가 설명 (딕셔너리의 함수 저장)
2. 조건문 match
match-case
주어진 값을 case 블록의 값과 비교해 일치하는 case만 실행한다.
- 즉, match 키워드 뒤에 붙은 변수의 값이나 값 자체가 case 키워드 뒤의 값과 같을 경우, 해당 블럭의 실행문을 수행한다.
- 마지막에 case _ 블록의 실행문3은 위의 모든 케이스에 해당하지 않는 경우 수행하는 내용이 된다.
match 변수 or 값 :
case 값1:
실행문1
case 값2:
실행문2
.
.
.
case _:
# 다른 조건들을 모두 제외한 값을 의미함
실행문3
⇒ 조건을 따지고자 하는 경우가 많을 때, if-elif-else 보다 가독성이 높고 간결하게 작성할 수 있다.
- 예시
print("=== OhGiraffers vending machine ===")
print("tiger: 우리는 1인 24시간 교대제로 간다")
print("monkey: 24시간 문의 환영, 다른 말로 하면?")
print("squirrel: 저도 하루에 너다섯 시간 자는데요?")
print("rabbit: 살아남는 사람이 강한 사람입니다.")
print("====================================")
print("만나고 싶은 선생님을 입력해 주세요")
input_teacher = input()
print("====================================")
sleep_time = 0
match input_teacher:
case "tiger":
print("호랑이 선생님의 메타버스에 오신 것을 환영합니다.")
sleep_time = 3
case "monkey":
print("원숭이 선생님의 밀림에 오신 것을 환영합니다.")
sleep_time = 3.5
case "squirrel":
print("다람쥐 선생님의 매력의 늪에 오신 것을 환영합니다.")
sleep_time = 5
case "rabbit" :
print("토끼 선생님의 다정보스 랩에 오신 것을 환영합니다.")
sleep_time = 5.2
case _:
print("공부할 마음이 없으신 건 아니죠?")
print("매일 " + str(sleep_time) + "시간의 수면이 예상됩니다.")
# print("매일", sleep_time, "시간의 수면이 예상됩니다.")
'SK Networks AI > 일일 회고록' 카테고리의 다른 글
[SK네트웍스 Family AI 캠프 11기] 일일 회고 - 6일차(25.02.14 금요일) (2) | 2025.02.14 |
---|---|
[SK네트웍스 Family AI 캠프 11기] 일일 회고 - 5일차(25.02.13 목요일) (0) | 2025.02.13 |
[SK네트웍스 Family AI 캠프 11기] 일일 회고 - 4일차(25.02.12 수요일) (0) | 2025.02.12 |
[SK네트웍스 Family AI 캠프 11기] 일일 회고 - 2일차(25.02.10 월요일) (0) | 2025.02.10 |
[SK네트웍스 Family AI 캠프 11기] 일일 회고 - 1일차(25.02.07 금요일) (2) | 2025.02.09 |