python - 使用字典和列表在 Python 中创建邻接列表

标签 python algorithm list dictionary graph

我想创建一个数据结构来存储顶点的名称、与它相邻的顶点以及边权重。我想创建一个 dict 将一个顶点映射到一个 list ,该 list 进一步有 dict 来存储它与边缘权重相邻的顶点。

换句话说:

D = {
    vertex1: [
        {
            Adj_vertex1: edge weight
        }, 
        {
            Adj_vertex2:    edge weight
        } 
    ]
}

有没有有效的方法来做到这一点?另外,如果我使用上面的结构,我该如何访问 Adj_vertex2

最佳答案

除非您有更复杂的结构,否则字典工作正常。但是你正在为你的顶点声明一个字典列表。你可以这样简化它;

D = { vertex1: {Adj_vertex1: edge_weight, Adj_vertex2: edge_weight}}

然后像这样得到adj_vertex2的权重;

D[vertex1][Adj_vertex2]

或者如果你想在一个顶点不与另一个顶点相邻时获得一个默认值,因此不存在于字典中你可以使用这个(感谢 Hossein 的评论):

D[vertex1].get(Adj_vertex2, 0)

然后像这样添加一个新的顶点;

D[new_vertex] = {Adj_vertex1: edge_weight, Adj_vertex2: edge_weight}

关于python - 使用字典和列表在 Python 中创建邻接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42824433/

相关文章:

algorithm - 直接按升序枚举数字的因子而不进行排序?

list - List::: 运算符和++的区别

Java:如何使用不同的 equals 定义执行列表操作?

python - 如何链接在两个列表之间创建连接?

python - 删除/删除 pandas DataFrame 中任意列中具有特定字符串的行

python - 在 Python 中,%25s、%28s、%15s、%3s 等是什么意思?

algorithm - 二叉树高度的不同解释

python - python* 中字符串插值的实现有什么问题

python - 使用 python 和 OpenCV 加载上传的图像而不保存到硬盘

java - 获取 n x n 网格中所有可能的下边缘和右边缘路径