1. 리스트와 딕셔너리
Q. 서점에서 도서 관련 정보를 프로그램에 저장하려고 한다. 도서 정보는 책 제목, 도서번호, 도서분류가 있다. 현재 도서는 5권이다(예스24에서 베스트셀러 기준으로 대충 5권 긁어옴) 다음 두 가지 방식으로 데이터를 관리할 때, 차이점은 무엇인지 생각해보자.
책 제목 | ISBN | 도서분류
불변의 법칙 | 9791198517425 | 경제경영
THE MONEY BOOK 더 머니북 | 9791198686114 | 경제경영
나를 소모하지 않는 현명한 태도에 관하여 | 9791198682505 | 자기계발
초역 부처의 말 | 9791193506516 | 인문
나는 다정한 관찰자가 되기로 했다 | 9791198752406 | 교육
리스트로 관리하기
book1 = "불변의 법칙 | 9791198517425 | 경제경영"
book2 = "THE MONEY BOOK 더 머니북 | 9791198686114 | 경제경영"
book3 = "나를 소모하지 않는 현명한 태도에 관하여 | 9791198682505 | 자기계발"
book4 = "초역 부처의 말 | 9791193506516 | 인문"
book5 = "나는 다정한 관찰자가 되기로 했다 | 9791198752406 | 교육"
books = [book1, book2, book3, book4, book5]
booklist = []
for book in books:
booklist.append(book.replace("|", ",").split(","))
namelist=[]
for book in booklist:
namelist.append(book[0])
numberlist=[]
for book in booklist:
numberlist.append(book[1])
categorylist=[]
for book in booklist:
categorylist.append(book[2])
print(namelist)
print(numberlist)
print(categorylist)
리스트로 만들었을 때에는 namelist[0] 이렇게 인덱스 번호로 접근할 수 있음. 리스트는 안에 있는 원소를 순차적으로 접근하거나, 처리할 때 유용하다. ex) namelist[0:3] 첫 번째 책부터 4번째 책이름을 표시해.
대신 요소가 복잡한 구조를 가지게 되면 그 의미를 파악하기 어려울 수 있다. -> 여러 리스트를 만들어야 함. 리스트 안에 리스트..
리스트 안에 새로운 원소를 넣거나 제거하면 인덱싱이 달라지기 때문에 헷갈린다.
딕셔너리로 관리하기
library = {
0 : {"name" : "불변의 법칙", "number" : "9791198517425", "category" : "경제경영"},
1 : {"name" : "THE MONEY BOOK 더 머니북", "number" : "9791198686114", "category" : "경제경영"},
2 : {"name" : "나를 소모하지 않는 현명한 태도에 관하여", "number" : "9791198682505", "category" : "자기계발"},
3 : {"name" : "초역 부처의 말", "number" : "9791193506516", "category" : "인문"},
4 : {"name" : "나는 다정한 관찰자가 되기로 했다", "number" : "9791198752406", "category" : "교육"}
}
print(library[0]["number"])
딕셔너리도 키값인 번호를 입력해서 값을 찾을 수 있음.
직관적으로는 딕셔너리가 더 쉽고 빠르게 정보를 찾을 수 있을 것 같다.
2. 반복문
5000원으로 먹을 수 있는 커피 음료를 찾아보자!
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]
#인덱스를 이용한 방법
for i in range(0, 6):
if prices[i] <= 5000:
print(coffees[i])
#enumerate 함수 사용
for i, price in enumerate(prices):
if price <= 5000:
print(coffees[i])
#zip으로 묶어서 한방에
for coffee, price in zip(coffees, prices):
if price<=5000:
print(coffee)
첨에 이 문제 풀 때 커피랑 커피가격을 딕셔너리로 묶을라고 쌩쇼를 하다가.. 하하 첫번째 솔루션을 찾음.
+ 오늘만 특별히 모든 메뉴가 500원이 할인된다고 했을 때, 먹을 수 있는 음료는? 이건 나는 today라는 500원 할인된 값이 들어간 새로운 리스트를 만들었다.
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]
today=[]
for i in range (6):
a=int(prices[i])
today.append(a-500)
if today[i] <= 5000:
print(coffees[i])
print(today)
'공부방 > Upstage AI Lab 4기' 카테고리의 다른 글
7/5 학습일지 | 파이썬 웹크롤링 연습하기 (0) | 2024.07.06 |
---|---|
7/5 학습일지 | 파이썬 | 반복문 연습 (0) | 2024.07.05 |
챗GPT 프롬프트 잘 쓰는 방법 | 프롬프트 엔지니어링 기초 (0) | 2024.07.04 |
MLOps에 대한 아주아주 기초적인 정보들 (0) | 2024.07.04 |
VS Code 켜서 주피터 노트북 켜고 가상환경 세팅해주기 (0) | 2024.07.03 |