문제 4.
영화 데이터 movie.json 을 통해 genre_ids, id, overview, title, vote_average 정보로로 구성된 딕셔너리를 출력한다.
def movie_info(movie):
movie_dict = {
'genre_ids': movie['genre_ids'],
'id': movie['id'],
'overview': movie['overview'],
'title': movie['title'],
'vote_average': movie['vote_average'],
}
return movie_dict
if __name__ == '__main__':
movie_json = open('data/movie.json', encoding='UTF8')
movie = json.load(movie_json)
pprint(movie_info(movie))
def movie_info(movie):
movie_info의 함수를 만들어준다.
함수를 만드는 이유는 중괄호{} 안에 만들 딕셔러니를 한 묶음으로 묶어서 추후에 간편하게 호출하기 위해서이다.
Parameter인 movie라는 변수 이름을 지어준다. 이는 함수 내부에서 사용되는 식별자이다.
movie_dict = {
'genre_ids': movie['genre_ids'],
'id': movie['id'],
'overview': movie['overview'],
'title': movie['title'],
'vote_average': movie['vote_average'],
return movie_dict
}
movie_dict이라는 딕셔너리를 중괄호{}를 이용하여 생성한다.
딕셔너리의 ':' 형식으로 키와 값을 쌍으로 이루어주도록 한다.
return하여 딕셔너리 값을 반환한다.
if __name__ == '__main__':
movie_json = open('data/movie.json', encoding='UTF8')
data 폴더에 있는 movie.json에 대한 정보를 열고, 이를 movie_json이라는 변수로에 넣어준다.
movie = json.load(movie_json)
movie_info 함수의 parameter였던 movie에 movie.json 내용을 넣어준 movie_json 변수를 movie에 넣어준다.
이는 딕셔너리에서 'genre_ids', 'id', 'overview' 등의 내용을 가져오도록 한다.
즉, 우리가 필요한 내용을 추출하는 것이다.
문제 5.
movies.json과 genres.json을 사용하여 딕셔너리를 구성한다.
import json
from pprint import pprint
def movie_info(movie, genres):
genre_ids = movie['genre_ids']
genre_names = []
for genre in genres:
if genre['id'] in genre_ids:
genre_names.append(genre['name'])
movie_dict = {
'genre_names': genre_names,
'id': movie['id'],
'overview': movie['overview'],
'title': movie['title'],
'vote_average': movie['vote_average'],
}
return movie_dict
import json
from pprint import pprint
def movie_info(movie, genres):
genre_ids = movie['genre_ids']
genre_names = []
json을 사용하기 위해 import를 통해 모듈을 가져온다.
또한 깔끔한 딕셔너리를 출력하기 위해 pprint 모듈을 가져온다.
4번 문제처럼 movie_info 함수를 정의하고, movie와 genres의 식별자 생성 및 명명해주도록 한다.
movie.json에서 가져올 정보들을 담고있는 movie 변수에서의 genre_ids 정보를 genre_ids라는 변수에 넣어준다.
(즉, movie.json == movie)
genre_names는 리스트 타입으로 변환하도록 해준다.
for genre in genres:
if genre['id'] in genre_ids:
genre_names.append(genre['name'])
for 반복문을 통해 genres 변수 정보를 모두 다 꺼내서 genre에 하나씩 넣어준다.
단, if 조건문을 통해 모든 데이터를 담는 것이 아닌 우리가 필요한 것만 넣어주도록 한다.
위 구문을 통해 movie.json의 genre_ids 정보가 담긴 genre_ids 변수에서
만약 'id'라는 것이 있다면 genre.json에서의 name에 대한 정보를 genre_name에 넣어준다.
엥 넘 복잡하다. 과정을 정리해보자.
(movie.json의 genre_ids → genre.json의 'id' 확인 → 두 번호 일치 → genre.json의 'name'을 genre_name 변수에 넣어줌)
4번 문제와 같이 movie_dict이라는 딕셔너리를 만들어준다.
문제 6.
movies.json과 genres.json을 활용하여 전체 영화의 특정 정보를 출력한다.
문제 5번과 거의 동일한 코드로, movie.json이 아닌 movies.json을 사용하여 다수의 영화 정보 딕셔너리를 출력한다.
def movie_info(movies, genres):
movie_info_dict = []
for mlist in movies:
genre_ids = mlist['genre_ids']
genre_names = []
for genre in genres:
if genre['id'] in genre_ids:
genre_names.append(genre['name'])
movie_dict = {
'genre_names': genre_names,
'id': mlist['id'],
'overview': mlist['overview'],
'title': mlist['title'],
'vote_average': mlist['vote_average'],
}
movie_info_dict.append(movie_dict)
return movie_info_dict
def movie_info(movies, genres):
movie_info_dict = []
출력할 딕셔너리를 리스트로 반환한다.
제일 안쪽에 있는 들여쓰기부터 살펴보자.
for genre in genres:
if genre['id'] in genre_ids:
genre_names.append(genre['name'])
위 5번과 동일하게 일치하는 id 번호가 있다면 그에 상응하는 name을 genre_names에 정보를 넣어준다.
for mlist in movies:
genre_ids = mlist['genre_ids']
genre_names = []
mlist의 genre_ids 정보는 genre_ids 변수에 넣어준다.
genre_name은 리스트로 출력한다.
movie_dict = {
'genre_names': genre_names,
'id': mlist['id'],
'overview': mlist['overview'],
'title': mlist['title'],
'vote_average': mlist['vote_average'],
}
movie_info_dict.append(movie_dict)
return movie_info_dict
movie_dict의 딕셔너리를 만들어주고,
movie_dict에 대한 정보를 movie_info_dict에 추가해준다.
그리하여 movie_info_dict를 반환해준다.
'Python' 카테고리의 다른 글
객체지향프로그래밍(OOP; Object Oriented Programming) (3) | 2022.07.19 |
---|---|
실습 실수 및 에러 모음.zip (0) | 2022.07.17 |
프로젝트 정리 - JSON, 모듈, 파일 읽고 쓰기 (00-03) (1) | 2022.07.15 |
데이터의 구조 (Data Structure) (0) | 2022.07.14 |
함수 (Function) (0) | 2022.07.13 |