파이썬에서는 리스트 안에 for 반복문, if 구문을 넣어 코드를 간략화할 수 있습니다. 마찬가지로 딕셔너리 안에도 for 반복문, if 구문을 넣어 코드를 간략화 할 수 있습니다.


dictionary에 for 반복문 넣기 (list가 주어진 경우)


students = ["student a", "student b", "student c", "student d", "student e"]

students라는 리스트가 주어져 있습니다. 이제 리스트 안에 있는 5명의 학생에게 50~100 사이의 점수를 랜덤하게 부여하는 딕셔너리를 만들려고 합니다.


import random
students = ["student a", "student b", "student c", "student d", "student e"]

scores = {student:random.randint(50,100) for student in students}

print(scores)


위와 같이 딕셔너리를 만들 수 있습니다.


코드의 구조를 보면 아래와 같습니다.

variable = {key : value for key in list}


dictionary에 for 반복문 넣기 (dictionary가 주어진 경우)

students = {"student a" : 90,
"student b" : 80,
"student c" : 70,
"student d" : 60,
"student e" : 50}

이번에는 딕셔너리에 있는 학생 5명의 점수를 일괄적으로 10점 올려보도록 하겠습니다.

students = {"student a" : 90,
"student b" : 80,
"student c" : 70,
"student d" : 60,
"student e" : 50}

add_scores = {student : score + 10 for (student, score) in students.items()}

print(add_scores)

위와 같이 코드를 작성하여 모든 학생의 점수를 일괄적으로 10점 올렸습니다.


코드의 구조를 보면 아래와 같습니다.

variable = {new_key : new_value for (key, value) in dictionary.items()}

*딕셔너리 이름 뒤에는 .items()를 붙여야 에러가 발생하지 않습니다.



dictionary에 if 구문 넣기


이번에는 바로 위에서 만든 딕셔너리에서 점수가 80점 이상인 학생만 골라내 새로운 딕셔너리를 만들어 보겠습니다. 

students = {"student a" : 90,
"student b" : 80,
"student c" : 70,
"student d" : 60,
"student e" : 50}

add_scores = {student : score + 10 for (student, score) in students.items()}

passed_students = {student : score for (student, score) in add_scores.items() if score >= 80}

print(passed_students)

위의 코드 처럼 딕셔너리 안에 if 구문을 넣으면 점수가 80점 이상인 학생만 골라낼 수 있습니다.


코드의 구조를 보면 아래와 같습니다.

variable = {new_key : new_value for (key, value) in dictionary.items() if statement}


블로그 이미지

방구석 세계인

관심분야 : 외국어 학습, 프로그래밍, 책 리뷰 등...

,