You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将列表形式的图转换为邻接表字典结构

邻接表转换实现方案

问题分析

你当前的错误是将终点和权重作为集合元素存入,而非以键值对形式存入嵌套字典,导致结构混乱。以下是针对有向/无向图的两种正确实现:


原始输入示例

graphConvert = [[('C', 'B', 4)], [('A', 'D', 2)], [('D', 'C', 3)], [('A', 'C', 4)]]

1. 有向图邻接表(仅保留原始边方向)

adjacency_list = {}

# 遍历所有嵌套边列表
for edge_group in graphConvert:
    # 提取每条边的起点、终点、权重
    start_node, end_node, weight = edge_group[0]
    # 初始化起点对应的嵌套字典(若不存在)
    if start_node not in adjacency_list:
        adjacency_list[start_node] = {}
    # 存入终点与权重的键值对
    adjacency_list[start_node][end_node] = weight

print(adjacency_list)

输出结果:

{'C': {'B': 4}, 'A': {'D': 2, 'C': 4}, 'D': {'C': 3}}

2. 无向图邻接表(双向添加边,匹配你预期的格式)

如果是无向图,需要同时添加反向边:

adjacency_list = {}

for edge_group in graphConvert:
    start_node, end_node, weight = edge_group[0]
    # 处理正向边
    if start_node not in adjacency_list:
        adjacency_list[start_node] = {}
    adjacency_list[start_node][end_node] = weight
    # 处理反向边
    if end_node not in adjacency_list:
        adjacency_list[end_node] = {}
    adjacency_list[end_node][start_node] = weight

print(adjacency_list)

输出结果(与你预期一致):

{'C': {'B': 4, 'D': 3, 'A': 4}, 'B': {'C': 4}, 'A': {'D': 2, 'C': 4}, 'D': {'A': 2, 'C': 3}}

内容的提问来源于stack exchange,提问作者CuloAtomico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:55:18