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"]
Exemple #3
0
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
Exemple #6
0
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)