gpt4 book ai didi

python - 基于用户输入在 Python 中创建加权有向图

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:01 25 4
gpt4 key购买 nike

我需要创建这样的东西来表示基于用户输入的有向加权图 -

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)

我尝试过,但由于某种原因,它正在用上次读取的权重替换之前读取的权重。有什么解决办法吗?

最佳答案

for i in graph:
graph[i] = edges

您将相同的字典(edges)分配给graph的每个键。因此,当您为它们中的任何一个分配值时,您就是将该值分配给它们中的所有。看起来您真正想要的是边缘副本。在这种情况下,由于您没有为 edges 分配任何可变值,因此浅拷贝就足够了:

for i in graph:
graph[i] = edges.copy()

关于python - 基于用户输入在 Python 中创建加权有向图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com