编写程序,实现图的字典嵌套表示,
每个顶点用一个字典表示。如下图中O点表示为:{‘O’: {‘A’:2,‘B’:5,C:4}},
其中表示一个顶点和该顶点相连的边及长度,
要求输出整个图的顶点数num_vertices、边的个数num_edges以及边的总长度len_edges。
顶点数等于所输入的num_vertices;
边数num_edges等于字典中字母的个数;
边的总长度len_edges等于所有数字之和
图的表示:
{'o':{'a':2,'b':5,'c':4}}
{'a':{'b':2,'d':7}}
{'b':{'c':1,'e':3,'d':4}}
{'c':{'e':4}}
{'d':{'e':1,'t':5}}
{'e':{'t':7}}
{'t':{}}
#整个图的顶点数num_vertices
num_vertices = int(input("请输入顶点数:"))
#定义边的个数num_edges以及边的总长度len_edges
num_edges = 0
len_edges = 0
print("请输入图的字典的嵌套:")
#for循环取出字典内容
for i in range(num_vertices):
# 图的字典的输入,dict内有{'O': {'A':2,'B':5,C:4}}
# 每行输入表示一个顶点和该顶点相连的边及长度
dict = eval(input()) # eval将str类型转换为int类型
#一个顶点对应的边,取出value值,{'A':2,'B':5,C:4}
for j in dict:
#{'A':2,'B':5,C:4},将key,value赋值在temp,构成新的文件
temp = dict [j]
#取出key值
for key in temp:
num_edges += 1 #边的个数
len_edges += temp[key] #边的长度
print(f"整个图的顶点数{num_vertices}、边的个数{num_edges}以及边的总长度{len_edges}")
运行结果图: