你好我有以下代码为图表做邻接列表,它打印代码就好了,除非向va和vb添加新值,旧密钥会被覆盖。如果我发现顶点0与1和2相邻,我想添加两个,但是1被2覆盖。另外我尝试使用其他插入方法,我得到错误0,这是字典中没有键那个指数:
def caminhografo(grafo, va, vb):
vat = vertex
i = 0
a = 0
z = 0
va = int(va)
vb = int(vb)
x = len(grafo.node)
if va < vb:
for va in range (vb+1):
a = 0
x = len(grafo.node)
for a in range (x):
if [int(va),int(a)] in grafo.node:
vat.adj[va] = a
if va > vb:
while vb > va:
a = 0
x = len(grafo.node)
for a in range (x):
if[int(vb),int(a)] in grafo.node:
vat.adj[vb] = a
vb = vb - 1
print (vat.adj)
我如何正确地动态插入键?
这是Vertex,grafo是图类:
class graph:
v = 0
a = 0
node = []
class vertex:
adj = {}
感谢您的帮助。
答案 0 :(得分:0)
您可以将vat.adj
中的每个值声明为列表vat.adj[i] = []
,然后执行
vat.adj[vb].append(a)
请注意,您需要将vat.adj
中的每个项初始化为所有顶点的列表。
for i in range(n):
vat.adj[i] = []
答案 1 :(得分:0)
使用defaultdict完成了工作。
from collections import defaultdict
然后我不是使用类顶点,而是创建了一个defaultdict(list):
vat = defaultdict(list)
之后,使用附加功能就可以了:
大桶[VA] .append(a)中
似乎用蛮力创建一个列表的字典不起作用,因为附加不会发生。但是使用导入列表的默认字典解决了这个问题。