我有一个边缘字典如下;
edges={vertex1:[(neighbor1,weight1),(n2,w2),...],v2:[(neighbork,weightk).....vk:[(),()]}
有谁知道一种扭转O(E)边缘的方法?我只能想到嵌套的方法,这绝对是不对的。
例如:
{0:[(1,5),(2,3)],1:[(2,2)]}
是边缘为0-> 1(重量5),0-> 2(重量3),1-> 2(重量2)的图表
逆转后;
{1:[(0,5)],2:[(0,3),(1,2)]}
是边缘为1> 0(重量5),2-> 0(重量3),2-> 1(重量2)
的图表答案 0 :(得分:3)
from collections import defaultdict
g = {0:[(1,5),(2,3)],1:[(2,2)]}
r = defaultdict(list)
for origin, targets in g.iteritems():
for target, weight in targets:
r[target].append((origin, weight))
现在r
基本上就是你的答案。如果需要,你可以在结尾处dict(r)
获得常规字典而不是defaultdict。