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

在Python中,如何检查图的两个顶点之间是否存在边?,python,graph,Python,Graph,我有一个简单的图,想创建一个方法“get_edge”,它将两个顶点作为参数,如果存在,则返回它们之间的边,否则不返回。这是我尝试过的一个片段。它不工作,因为它当前创建了一个对象,而不是检查是否已经存在一个对象。编写get_edge()的最简单方法是什么 我猜你想要的是: def get_edge(self, v1, v2): try: e = self[v1][v2] # order shouldn't matter print("edge exists"

我有一个简单的图,想创建一个方法“get_edge”,它将两个顶点作为参数,如果存在,则返回它们之间的边,否则不返回。这是我尝试过的一个片段。它不工作,因为它当前创建了一个对象,而不是检查是否已经存在一个对象。编写get_edge()的最简单方法是什么


我猜你想要的是:

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
派生的,或者有一个
\uuuu getitem\uuuu
方法可以工作,如果您请求一个不存在的密钥,它将引发一个
KeyError
。如果您不需要
print
语句(也就是说,它们只是为了调试),您可以去掉
e
变量,直接返回结果。

这让人感到有点困惑。get_edge试图处理一个edge对象,但add_edge不会创建一个—它只设置self[v][w]和self[w][v]。哪个是正确的表示?
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