def ranking_peliculas2(num_peliculas: int, lst1: list, lst2: list, criterio2: int): t1_start = process_time() #tiempo inicial movies_lt = lt.newList(datastructure='ARRAY_LIST', cmpfunction=None) i = 1 filas = len(lst1) while i < filas: movie_name = lst1[i]["original_title"] movie_vote_average = float(lst1[i]["vote_average"]) movie_vote_count = float(lst1[i]["vote_count"]) movie = { 'movie_name': movie_name, 'vote_average': movie_vote_average, 'vote_count': movie_vote_count } lt.addLast(movies_lt, movie) i = i + 1 if criterio2 == 1: mg.mergesort(movies_lt, mejor_calificada) if criterio2 == 2: mg.mergesort(movies_lt, peor_calificada) conjunto_mejores_calificadas = lt.subList(movies_lt, 1, num_peliculas) pos_inicial_peores_calificadas = lt.size(movies_lt) - num_peliculas conjunto_peores_calificadas = lt.subList(movies_lt, pos_inicial_peores_calificadas, num_peliculas) t1_stop = process_time() #tiempo final print("Tiempo de ejecución ", t1_stop - t1_start, " segundos") return conjunto_mejores_calificadas[ "elements"], conjunto_peores_calificadas["elements"]
def ranking_genero(genero: str, num_peliculas: int, lst1: list, lst2: list, criterio: int): t1_start = process_time() #tiempo inicial movies_lt = lt.newList(datastructure='ARRAY_LIST', cmpfunction=None) j = 1 filas = len(lst1) while j < filas: elemento = lst1[j]["genres"] if genero in elemento: movie_name = lst1[j]["original_title"] movie_vote_average = float(lst1[j]["vote_average"]) movie_vote_count = float(lst1[j]["vote_count"]) movie = { 'movie_name': movie_name, 'vote_average': movie_vote_average, 'vote_count': movie_vote_count } lt.addLast(movies_lt, movie) j = j + 1 if criterio == 1: mg.mergesort(movies_lt, greater_num) if criterio == 2: mg.mergesort(movies_lt, greater_rating) pedazo_mejores = lt.subList(movies_lt, 1, num_peliculas) pos_inicial_peores = lt.size(movies_lt) - num_peliculas pedazo_peores = lt.subList(movies_lt, pos_inicial_peores, num_peliculas) t1_stop = process_time() #tiempo final print("Tiempo de ejecución ", t1_stop - t1_start, " segundos") return pedazo_mejores["elements"], pedazo_peores["elements"]
def subList(lst, pos, numelem): """ Retorna una sublista de la lista lst. Se retorna una lista que contiene los elementos a partir de la posicion pos, con una longitud de numelem elementos. Se crea una copia de dichos elementos y se retorna una lista nueva. Args: lst: La lista a examinar pos: Posición a partir de la que se desea obtener la sublista numelem: Numero de elementos a copiar en la sublista Raises: Exception """ try: return lt.subList(lst, pos, numelem) except Exception as exp: error.reraise(exp, 'List->subList: ')
def req2(x, criteria, sentido, lst): """ Retorna una lista con cierta cantidad de elementos ordenados por el criterio """ res = "THE " + str(x) + " " if criteria == 0 and sentido == 0: sort.mergesort(lst, lessV) res = res + "WORST VOTE" elif criteria == 0 and sentido == 1: sort.mergesort(lst, greaterV) res = res + "BEST VOTE" elif criteria == 1 and sentido == 0: sort.mergesort(lst, lessA) res = res + "WORST AVERAGE" else: sort.mergesort(lst, greaterA) res = res + "BEST AVERAGE" return lt.subList(lst, 1, x), res + " Movies \n"
def req6(x, criteria, sentido, lstMov, genre): pelicula = lt.newList("ARRAY_LIST") numPel = 0 voteProm = 0.0 voteAverage = 0.0 for i in range(lt.size(lstMov)): if lt.getElement(lstMov, i)['genres'].find(genre) != -1: lt.addLast(pelicula, lt.getElement(lstMov, i)) res = "THE " + str(x) + " " if criteria == 0 and sentido == 0: sort.mergesort(pelicula, lessV) res = res + "WORST VOTE " elif criteria == 0 and sentido == 1: sort.mergesort(pelicula, greaterV) res = res + "BEST VOTE " elif criteria == 1 and sentido == 0: sort.mergesort(pelicula, lessA) res = res + "WORST AVERAGE " else: sort.mergesort(pelicula, greaterA) res = res + "BEST AVERAGE " sub = lt.subList(pelicula, 1, x) for i in range(lt.size(sub)): numPel += 1 voteProm += float(lt.getElement(sub, i)['vote_count']) voteAverage += float(lt.getElement(sub, i)['vote_average']) prom1 = 0.0 prom2 = 0.0 if numPel != 0: prom1 = voteProm/numPel prom2 = voteAverage/numPel res = res + genre + " Movies\n Promedio de votos: " + \ str(prom1) + " Votación promedio: " + str(prom2) + "\n" return sub, res
def subList(lst, pos, numelem): """ Retorna una sublista de la lista lst, partiendo de la posicion pos, con una longitud de numelem elementos """ return lt.subList(lst, pos, numelem)