我编写了一个程序,它为五个节点提供了以下输出,这是从每个节点到不同节点的最短路径:
G1= {'D': 3.0, 'E': 4.0, 'B': 1.0, 'C': 5.0, 'A': 0}
G1={'D': 2.0, 'E': 3.0, 'B': 0, 'C': 4.0, 'A': 1.0}
G1={'D': 2.0, 'E': 3.0, 'B': 4.0, 'C': 0, 'A': 5.0}
G1={'D': 0, 'E': 1.0, 'B': 2.0, 'C': 2.0, 'A': 3.0}
G1={'D': 1.0, 'E': 0, 'B': 3.0, 'C': 3.0, 'A': 4.0}
我试图从上面的输出中找到所有节点的平均值。我尝试了以下代码:
for s in G:
G1=ShortestPaths(G,s)#this gives the output i mentioned above
mean= sum([G1[s] for s in G1])/(len(G1)-1)# this is where i am not getting result
return float(mean)
但它只给出了最后一行的意思。我需要字典中所有值的总和(25个值的总和)并除以20(因为我输出的每一行都有一个零。我不应该考虑一下)。任何人都可以用简单的代码帮我解决这个问题吗?我不认为.items和其他内置函数。
答案 0 :(得分:1)
在循环之后计算结束时的平均值:
total = 0.0
count = 0.0
for s in G:
G1=ShortestPaths(G,s)
total += sum([G1[s] for s in G1])
count += (len(G1)-1)
return float(total / count) if count else None