2013-02-13 6 views
0

나는 간단한 그래프를 가지고 있고 두 개의 꼭짓점을 인수로 취하여 그것들 사이에 가장자리를 반환하는 get_edge 메서드를 만들고 싶습니다. 그렇지 않으면 None을 반환합니다. 여기 내가 시도한 것에 대한 스 니펫이 있습니다. 이미 존재하는 개체가 있는지 확인하는 대신 현재 개체를 만들기 때문에 작동하지 않습니다. get_edge()를 작성하는 가장 간단한 방법은 무엇입니까? 나는 당신의 클래스가 dict에서 파생 된 또는 작동하는 __getitem__ 방법을 가지고 있으며, 당신이 요청하는 경우 KeyError을 올릴 것입니다 있으리라 믿고있어파이썬에서 그래프의 두 정점 사이에 모서리가 있는지 확인하는 방법은 무엇입니까?

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 

:

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

조금 혼란 스럽습니다. get_edge는 Edge 객체를 처리하려고 시도하지만 add_edge는 하나를 만들지 않습니다. 단지 self [v] [w]와 self [w] [v] 만 설정합니다. 올바른 표현은 무엇입니까? – rkday

답변

1

난 당신이 뭔가를하려는 생각 존재하지 않는 키. print 구문이 필요하지 않은 경우 (디버깅 전용) e 변수를 사용하지 않고 결과를 직접 반환 할 수 있습니다.

관련 문제