Как написать данную функцию в функциональном стиле на python?
Есть функция, написанная структурно на python 3 и реализующая алгоритм Дейкстры. Мне нужно написать её в функциональном стиле, а я функционально ещё ничего не писал. Подскажите, как это сделать. Вот мой код:
_adj_list = {'A': {'B': 5}} # список смежности вершин (например AB=5 выглядит так)
# параметр current - вершина, откуда искать кратчайшие пути до всех других вершин
# возвращает словарь visited (результат работы алгоритма)
def algorithm_dijkstra(current):
nodes = tuple(_adj_list.keys())
unvisited = {node: None for node in nodes}
visited = {}
current_distance = 0
unvisited[current] = current_distance
while True:
try:
for neighbour, distance in _adj_list[current].items():
if neighbour not in unvisited:
continue
new_distance = current_distance + distance
if unvisited[neighbour] is None or unvisited[neighbour] > new_distance:
unvisited[neighbour] = new_distance
visited[current] = current_distance
del unvisited[current]
if not unvisited:
break
candidates = [node for node in unvisited.items() if node[1]]
current, current_distance = sorted(candidates, key=lambda x: x[1])[0]
except LookupError:
for key in unvisited:
visited[key] = None
unvisited.clear()
break
return visited