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])