我有我的图形对象,我试图找到一种方法来找到一组节点的最小值。
实施例。节点:
input_nodes=[123,45]
graph_nodes=[10, 76,123,45,98,456]
我运行一个算法,计算图中每个节点和输入中每个节点之间的最短路径。 我有一个包含所有最短路径beetwen节点的字典:
{10:{123:0.56, 45:0.2}, 76:{123:0, 45:0.23}......
每个图节点都有等等。 如何只获得与零不同的最小重量:
像这样:
最小路径节点10具有节点45, 最小路径节点76具有节点45, ...... Thatnks
答案 0 :(得分:0)
我假设权重中可能存在联系,即一个节点可以与多于一个其他节点同等地“接近”。以下代码将全部包含在dict中。结果的结构与输入d
基本相同,但仅保留最小权重项。
更新:如果某个节点没有邻居或只有权重为0的邻居,则此节点将映射到结果中的空dict。
d = {10:{123:0.56, 45:0.2}, 76:{123:0, 45:0.23}, 19:{17:0}, 20:{}}
def closest(ns):
m = min((v for v in ns.values() if v != 0), default=-1)
return {k: v for k, v in ns.items() if v == m}
print({k: closest(v) for k, v in d.items()})