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

时间:2013-02-13 23:51:53

标签: python graph

我有一个简单的图形,想要创建一个方法“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 个答案:

答案 0 :(得分: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变量并直接返回结果。