在Python中,如何检查图的两个顶点之间是否存在边?
我有一个简单的图,想创建一个方法“get_edge”,它将两个顶点作为参数,如果存在,则返回它们之间的边,否则不返回。这是我尝试过的一个片段。它不工作,因为它当前创建了一个对象,而不是检查是否已经存在一个对象。编写get_edge()的最简单方法是什么在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"
我猜你想要的是:
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