데이터 분석가

파이썬(Python) 딕셔너리(dictionary) 채점프로그램, 목록 사전 본문

파이썬(python) 프로젝트 모음

파이썬(Python) 딕셔너리(dictionary) 채점프로그램, 목록 사전

PlintAn 2023. 3. 21. 10:00

안녕하세요 ! 이번 시간에는 파이썬 딕셔너리 사용법을 알아볼게요 !

 

 

딕셔너리는 {}로 묶어지는 형태이며

 

key : "value" 로 구성되어져 있습니다 !

키에 대한 값을 찾으면 그에 대응되는 value 값이 나오는 형태로

 

예를들어 '사과'라는 단어가 영어로 무엇인지 알고 싶을 때는 

 

키 값사과가 되는 거고 , 밸류 값apple

사과 : 'apple' 이 되는거죠 !

 

믿기지 않겠지만 사전입니다

#학생들의 성적을 기준으로 등급을 나누어 보겠습니다
# 먼저 데이터 값인 student_scores에 다음과 같은 형식으로 키:밸류 입력
student_scores = {
  "Harry": 81,
  "Ron": 78,
  "Hermione": 99, 
  "Draco": 74,
  "Neville": 62,
}

student_grades = {} #결과값(성적에 대한 등급)을 담기 위해 선언해둡니다

for student in student_scores: #임의변수 sutdent(아무 변수 사용가능)로 위 데이터를 입력
    score = student_scores[student] #sutdent_score[student]는 student_score을 임의변수로 인덱싱
    if score > 90: #90점 초과일 경우
        student_grades[student] = "Outstanding" #뛰어나다
    elif score > 80: #80점 초과일 경우
        student_grades[student] = "Exceeds Expectations" #예상 밖으로 뛰어나다
    elif score > 70: #70점 초과일 경우
        student_grades[student] = "Acceptable" #허용 한계점이다
    else: #나머지
        student_grades[student] = "Fail" #과락이다

print(student_grades) #student_grade에 담겨진 딕셔너리를 출력합니다

해당 프로그램은 student_score에 입력된 학생 : 점수 에 대해서 등급을 부여하는 

 

student_grade = {} 로 1:1 대응하는 딕셔너리를 만드는 프로그램입니다.

 

for문이 익숙하지 않은 분들은 왜 i나 a 같은 임의변수 대신 student가 들어갔는지

 

이해가 힘들수도 있는데요 사실 a나 i를 넣어도 상관 없는 임의변수 자리인데, 식을 좀 더 이해하기 쉽게 하기 위해

 

해당 for 문과 관련된 student를 넣어주는 겁니다.

 

score = student_score[student] 를 하게 되면 student_score에 있는 5가지 key : value 값 중

 

value 값인 학생들의 점수 값이 순서대로 인덱싱하여 나타나게 됩니다.

 

그렇게 저장된 student_grades ={}는 해당 학생의 점수에 대한 등급이 나타나게 됩니다.

 

 

두 번째 조금 복잡하게 생각하실 수도 있는 이중 딕셔너리 def문입니다

 

 

#여행 기록을 만드는 이중 딕셔너리 만들기
travel_log = [
{
  "country": "France",
  "visits": 12,
  "cities": ["Paris", "Lille", "Dijon"]
},
{
  "country": "Germany",
  "visits": 5,
  "cities": ["Berlin", "Hamburg", "Stuttgart"]
},
]


def add_new_country(name, visits_count, countries): #def 문으로 새로운 도시에 대한 정보 추가
    new_country = {}    #new_country 딕셔너리에 담아서 후에 append에 활용
    new_country["country"] = name    #def add_new_country 반복문에 넣을 name 을 인덱싱
    new_country["visits"] = visits_count    #def add_new_country 반복문에 넣을 visits 을 인덱싱
    new_country["cities"] = countries    #def add_new_country 반복문에 넣을 cities 을 인덱싱
    travel_log.append(new_country)     #name,visit_count,countries 정보인 new_country 추가

add_new_country("Russia", 2, ["Moscow", "Saint Petersburg"]) #제일 첫번째 실행되는 코드
print(travel_log) #제일 마지막 실행되는 코드로 추가된 정보 포함하여 출력

 

여기서 조금 중요한 점은 travel_log에 대한 딕셔너리 구조인데, 사실 저렇게 불필요한 

엔터를 사용하지 않아도 작동을 합니다. 하지만 알아두면 이해가 쉬울 거에요

 

사실 첫 번째 for문을 이용한 딕셔너리와  

 

score = student_score[student] 대신 new_country["country"] = name (왼쪽 식에 저장합니다)

와 같이 크게 다르지 않아 보입니다. 중요한 점은 def 문에서는 이중 딕셔너리로 new_country = {}

 

한번 더 저장해서 , travel_log.append(new_country)에 반영한다는 차이점이 있겠네요

 

한번씩 연습해봅시다 !

 

이상 딕셔너리를 이용한 기초 프로젝트였습니다 !!

 

한번 이해하면서 입력해봅시다 !

 

Comments