我有一个dict
,边是两元组格式的,它们的值我想添加到网络xgraph
mydict
看起来像下面打印的内容:
#print(mydict)
{('StopPoint:59:3786294', 'StopPoint:59:3730342'): {'time_tc': 120.0},
('StopPoint:59:3730342', 'StopPoint:59:4255013'): {'time_tc': 60.0},
('StopPoint:59:4255013', 'StopPoint:59:3786297'): {'time_tc': 120.0},
('StopPoint:59:3786297', 'StopPoint:59:3786298'): {'time_tc': 180.0},
('StopPoint:59:3786298', 'StopPoint:59:3786299'): {'time_tc': 60.0}, ...}
#len(mydict) = 233116
我注意到在使用G.add_edges_from(mydict)
(len(G.edges)
=123976)之后,我丢失了将近100000条边。当我绘制G
时,这一点也很明显,因为许多节点没有用边链接在一起。下面是G.edges
的样子:
#print(G.edges)
{('StopPoint:93:1184', 'StopPoint:93:1260'): {'time_tc': 180.0},
('StopPoint:93:1184', 'StopPoint:55:79'): {'time_map': 126},
('StopPoint:93:1184', 'StopPoint:55:80'): {'time_map': 126},
('StopPoint:93:1184', 'StopPoint:8711610:800:P'): {'time_map': 336},
('StopPoint:93:1184', 'StopPoint:93:1183'): {'time_map': 252}}, ...}
#len(G.edges) = 123976
在mydict
中不应该有任何重复,所以我不明白为什么边的总和没有添加到图中。有人知道吗
这是因为
mydict
变量同时包含(x,y)
和(y,x)
。如果构建networkx.Graph
(而不是networkx.DiGraph
),那么(x,y)
被认为与(y,x)
相同。示例:您可以构建一个
DiGraph
或者从mydict
中删除double(这实际上取决于您的具体需要)。要从mydict
中提取所有双精度,只需执行以下操作:doubles = set(frozenset(k) for k in mydict if (k[1], k[0]) in mydict)
相关问题 更多 >
编程相关推荐