python - 如何从 python 中的字典生成图形的邻接矩阵?

标签 python python-3.x dictionary matrix adjacency-matrix

我有以下字典:

g = {
'A': ['A', 'B', 'C'], 
'B': ['A', 'C', 'E'], 
'C': ['A', 'B', 'D'],
'D': ['C','E'],
'E': ['B','D']
}

它实现了一个图,每个列表包含图顶点的邻居(字典键是顶点本身)。 我有麻烦了,我想不出一种从他们的邻居列表中获取图形邻接矩阵的方法,这可能很容易,但我是 python 的新手,我希望有人能帮助我!我正在使用 Python 3.5

我需要生成以下矩阵:

enter image description here

最佳答案

这是一个使用 pandas 的解决方案。

import pandas as pd

g = {
'A': [ 'A', 'B', 'C'], 
'B': [ 'A', 'C', 'E'], 
'C': [ 'A', 'B ',' D '], # I added a comma here
'D': [' C ',' E '],
'E': [' B ',' D ']
}

# clean up the example
g = {k: [v.strip() for v in vs] for k, vs in g.items()}

edges = [(a, b) for a, bs in g.items() for b in bs]

df = pd.DataFrame(edges)

adj_matrix = pd.crosstab(df[0], df[1])

# 1  A  B  C  D  E
# 0               
# A  1  1  1  0  0
# B  1  0  1  0  1
# C  1  1  0  1  0
# D  0  0  1  0  1
# E  0  1  0  1  0

我不确定为什么您的示例矩阵中的 (A, A) 位置有 2。

关于python - 如何从 python 中的字典生成图形的邻接矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37353759/

相关文章:

python - Python 中的逆字典

python - 如何在Python上增量创建稀疏矩阵?

python - Pandas 删除一个数据框中的行,这些行与另一个数据框的列中的行共享一个公共(public)值

python - 将列表导出到 CSV/空格分隔,每个子列表位于其自己的列中

Python 最佳实践 - 我应该用值初始化变量吗?

c# - 如何在不使用 foreach 的情况下获得字典中嵌套列表的计数总和?

python - 在 Python 中使用并从 Apk 导入 .SO native 库

Python 3.x 舍入行为

限制变量范围的Pythonic方法?

python - 即使实际设置了键,字典也会在查找时引发 KeyError