Python

프로젝트 문제 정리 (04-06)

김디니 2022. 7. 16. 22:16

문제 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를 반환해준다.