我需要创建这样的东西来表示基于用户输入的有向加权图-
graph = {
'a': {'b': 1, 'c': 4},
'b': {'c': 3, 'd': 2, 'e': 2},
'c': {},
'd': {'b': 1, 'c': 5},
'e': {'d': -2}
}
到目前为止
import pprint
graph = {}
values = {}
v = int(input("Enter number of vertices: "))
print("Enter vertices(keys) : ")
for i in range(v):
graph.setdefault(input())
edges = {}
for x in graph:
edges.setdefault(x)
for i in graph:
graph[i] = edges
print("Enter weights: ")
for i in graph:
print(i)
for j in graph[i]:
var = input()
graph[i][j] = var
pprint.pprint(graph)
我试过了,但出于某种原因,它正在用上次读取的权重替换先前读取的权重。有什么解决办法吗?
有缩进错误吗?
而不是
你可能想写
是吗?
为
graph
的每个键分配相同的dict(edges
)。因此,当您为它们中的任何一个赋值时,您将该值赋给它们中的所有。看起来你真正想要的是edges
的拷贝。在这种情况下,由于没有为edges
分配任何可变值,因此浅拷贝就足够了:相关问题 更多 >
编程相关推荐