如何在Python中检查图中两个顶点之间是否存在边?

0 投票
1 回答
3079 浏览
提问于 2025-04-17 15:50

我有一个简单的图形,想要创建一个叫“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 这个变量,直接返回结果就可以了。

撰写回答