在循环中拉出Dict值

时间:2018-01-30 22:56:53

标签: python networkx

我无法在networkx中隔离图形边缘权重的值 我使用kruskals算法来查找给定图形的MST。 U和V是欧几里得空间中的点,数据是每条边的权重的字典。我使用字典值函数将值存储在集合中但是我返回了此错误

  File "/Users/mac/anaconda3/lib/python3.6/site-packages/networkx/convert_matrix.py", line 1143, in to_numpy_array
  A[index[u], index[v]] = d.get(weight, 1)
  TypeError: float() argument must be a string or a number, not 'dict_values'

我遇到问题的特定代码就是这个。

for u,v, data in sorted(self.original_graph.edges(data=True), key=lambda x: x[2]['weight']):
        setu = UF.find(u)
        setv= UF.find(v)

        if setu != setv:
            A.append((u,v,data.values()))
            UF.union(setu,setv)

我完全清楚networkx内置了自己的最小生成树函数,但是我试图在盲目实现内置函数之前自己学习这些算法

1 个答案:

答案 0 :(得分:0)

在阅读python的文档后,我意识到data.values()返回了dict中所有值的列表,我需要做的是引用数据[' weight' ]以获得它所拥有的价值。