查找无向图中节点的平均值

时间:2014-03-17 10:45:49

标签: python

我编写了一个程序,它为五个节点提供了以下输出,这是从每个节点到不同节点的最短路径:

   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和其他内置函数。

1 个答案:

答案 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