【发布时间】:2019-08-20 17:04:07
【问题描述】:
我正在做涉及图表的课程。我有边缘列表 E=[('a','b'),('a','c'),('a','d'), ('b','c') 等 ] 和我想要一个函数将它们转换为字典形式的邻接矩阵 {'a':['b','c','d'],'b':['a', etc.} 这样我可以使用只输入这些字典的函数。
我的主要问题是我无法弄清楚如何使用循环来添加键:值而不只是覆盖列表。我的函数的先前版本会将 [] 作为所有值输出,因为 'f' 没有连接。
我试过了:
V = ['a','b','c','d','e','f']
E=[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
def EdgeListtoAdjMat(V,E):
GA={}
conneclist=[]
for v in V:
for i in range(len(V)):
conneclist.append([])
if (v,V[i]) in E:
conneclist[i].append(V[i])
for i in range(len(V)):
GA[V[i]]=conneclist[i]
return(GA)
EdgeListtoAdjMat(V,E) 输出:
{'a': [], 'b': ['b'], 'c': ['c', 'c'], 'd': ['d', 'd', 'd'], 'e': [], 'f': []}
而它应该输出:
{'a':['b','c','d'],
'b':['a','c','d'],
'c':['a','b','d'],
'd':['a','b','c'],
'e':[],
'f':[]
}
【问题讨论】:
标签: python list dictionary type-conversion