当前位置:首页>python>极简干货|Python自动解析线路拓扑,一键找出全部通行路径

极简干货|Python自动解析线路拓扑,一键找出全部通行路径

  • 2026-10-11 08:30:27
极简干货|Python自动解析线路拓扑,一键找出全部通行路径

下面用网友提供的数据,结合 Pandas + DFS 深度优先算法,自动读取Excel、构建有向图,批量算出全部可行路径。

日常做线路梳理、流程拓扑、节点链路分析,人工梳理极易漏路径、看错分支。

excel数据如下:

需要实现:

一、完整可运行代码

import pandas as pd
from collections import defaultdict, Counter

excel_file = "routes.xlsx"

# 读取Excel A列线路关系
df_read = pd.read_excel(excel_file, header=None, usecols=[0])
edges_raw = df_read[0].dropna().tolist()

# 解析节点边
edges = []
for line in edges_raw:
if'-'in str(line):
        u, v = str(line).strip().split('-')
        edges.append((u, v))

print("\n读取到的边:", edges)

# 构建有向图 + 统计入度、出度
graph = defaultdict(list)
in_degree = Counter()
out_degree = Counter()

for u, v in edges:
    graph[u].append(v)
    out_degree[u] += 1
    in_degree[v] += 1

all_nodes = set(graph.keys()) | set(in_degree.keys())
start_nodes = [node for node in all_nodes if in_degree[node] == 0]
end_nodes   = [node for node in all_nodes if out_degree[node] == 0]

print("=" * 60)

# DFS递归查找所有无环简单路径
deffind_paths(graph, start, end, path=None):
if path isNone:
        path = [start]
if start == end:
return [path[:]]
    paths = []
for neighbor in graph.get(start, []):
if neighbor in path:
continue
        new_paths = find_paths(graph, neighbor, end, path + [neighbor])
        paths.extend(new_paths)
return paths

# 遍历输出全部起止路径
for start in start_nodes:
for end in end_nodes:
        all_paths = find_paths(graph, start, end)
if all_paths:
            print(f"【{start} → {end}】共 {len(all_paths)} 条路径:")
for p in all_paths:
                print(f"  {'-'.join(p)}")
else:
            print(f"【{start} → {end}】无路径")

二、本次实测原始线路数据

节点连线关系:

红庙-华隆、华隆-合肥、合肥-繁华、横溪-繁华、 合肥-横溪、红庙-昆山、昆山-芜湖、芜湖-繁华

三、程序实测输出结果

读取到的边: [('红庙', '华隆'), ('华隆', '合肥'), ('合肥', '繁华'), ('横溪', '繁华'), ('合肥', '横溪'), ('红庙', '昆山'), ('昆山', '芜湖'), ('芜湖', '繁华')]
============================================================
【红庙 → 繁华】共 3 条路径:
  红庙-华隆-合肥-繁华
  红庙-华隆-合肥-横溪-繁华
  红庙-昆山-芜湖-繁华

四、核心优势

  1. 自动识别唯一起点「红庙」、终点「繁华」
  2. 智能遍历所有分支线路,不遗漏、不重复
  3. 自带环路过滤,杜绝循环无效路线
  4. 仅需维护Excel表格,改数据无需改代码

五、使用方法

  1. 运行代码,自动解析、统计、输出全部路径
  2. 适合线路规划、流程梳理、拓扑节点分析等场景

六、源码获取或交流

需要本章或其他文章的源码和数据的同学,关注+三连,在对应文章下评论“6666“,加下面微信,发你!也可以拉你进群交流学习,加群备注:IT小本本学习

为了能随时获取最新动态,大家可以动动小手将公众号添加到“星标⭐”哦,点赞 + 关注,用时不迷路!!!!

关注公众号:IT小本本 👇

用时不迷路!!

最新文章

随机文章