Как написать данную функцию в функциональном стиле на 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

Ответы (0 шт):