如何在Python中检查图中两个顶点之间是否存在边?
我有一个简单的图形,想要创建一个叫“get_edge”的方法,这个方法会接受两个顶点作为参数,如果这两个顶点之间有边,就返回那条边,如果没有,就返回None(也就是空值)。我试过一些代码,但它不管用,因为现在的代码是创建了一个对象,而不是检查这两个顶点之间是否已经存在边。请问,写get_edge()的最简单方法是什么?
def add_edge(self, e): """Adds and edge to the graph by adding an entry in both directions. If there is already an edge connecting these Vertices, the new edge replaces it. """ v, w = e self[v][w] = e self[w][v] = e def get_edge(self, v1, v2): try: Edge(v1, v2) print 'Edge exists' except: print 'Edge does not exist' return None
1 个回答
1
我猜你想要的东西大概是这样的:
def get_edge(self, v1, v2):
try:
e = self[v1][v2] # order shouldn't matter
print("edge exists")
return e
except KeyError:
print("edge does not exist")
return None
我假设你的类是从 dict
这个字典类型派生出来的,或者它有一个 __getitem__
方法,这个方法能正常工作,并且如果你请求一个不存在的键时会抛出 KeyError
错误。如果你不需要那些 print
语句(也就是说,它们只是用来调试的),你可以去掉 e
这个变量,直接返回结果就可以了。