0

私は単純なグラフを持っており、引数として 2 つの頂点を取り、存在する場合はそれらの間のエッジを返し、そうでない場合は None を返すメソッド「get_edge」を作成したいと考えています。これが私が試したことのスニペットです。オブジェクトが既に存在するかどうかを確認するのではなく、現在オブジェクトを作成しているため、機能しません。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
4

1 に答える 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変数を使用せずに結果を直接返すことができます。

于 2013-02-14T00:01:39.183 に答える