Ich experimentiere mit einem Suchalgorithmus, und ich versuche, einen A * -Algorithmus zu verwenden, um das Problem zu lösen.Python - Eine Liste von Wörterbüchern sortieren
Ich verwende eine Liste von Wörterbüchern, um die interne Knotenstruktur zu erhalten. Jeder Knoten ist durch einen bestimmten Zustand und die damit verbundenen Kosten gekennzeichnet. Die Auswahlfunktion sollte den Knoten mit den niedrigsten Kosten zurückgeben. Um dies zu tun, filtere ich die Liste jedes Mal. Ich fand das ist sehr schnell, wenn das Problem sehr klein ist, aber in dem Fall, dass die Liste sehr groß ist, verwendet diese Funktion 84% der Gesamtzeit des Algorithmus.
Meine Frage ist, ob es eine effizientere Möglichkeit gibt, dies zu tun.
def select(self, frontier):
frontier.sort(key = lambda x: x['f_cost'])
#select the node with the lowest f_cost
return frontier.pop(0)
Vielleicht möchten Sie auch eine Prioritätswarteschlange verwenden. Zum Beispiel ['heapq'] (https://docs.python.org/3/library/heapq.html). –