Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Ayuda con la función sorted, python

17 de enero de 2017

Estoy haciendo un programa para calcular el camino entre dos estaciones de metro y necesito saber como ordenar una lista, que esta formada por más listas, a partir de una funcion, basicamente no se como usar el parametro key.

La funcion es esta, que calcula el heuristico:

def heuristic(self, path, dest): """ Estima el coste de llegar a una estación destindo dado un camino.

:param path: Una lista de estaciones con un camino.
    :param dest: La estación destino.
    :return: Un float indicando el coste estimado para llegar al destino
        dado este camino.
    """
    score = 1.0
    for linea in self.lines:
        if path[0] in linea and dest in linea:
            score = max(
                10.0 - abs(linea.index(path[0]) - linea.index(dest)),
                1.0)
    return 1. / score

y el metodo donde se encuentra la lista a ordenar es este:

def hill_climbing_search(self, origin, dest): """ Búsqueda de ruta basada en el método de escalada.

:param origin: La estación de origen.
    :param dest: La estación de destino.
    :return: Una lista ordenada por la secuencia de estaciones a seguir
        hasta llegar al destino.
    """
    cp=[[origin]]
    while cp:
        sucesores= self.succesors(cp[0][-1])
        expansion= self.expandir(cp[0],sucesores)
        for i in expansion:
            o=sorted(expansion,key = self.heuristic(i,dest))                   
        cp.pop(0)
        cp= o+ cp
        if not cp: #No hay solución
            return False
        if  cp[0][-1]==dest:
            return list(cp[0])