在元组列表中查找一个元组,如果不存在则添加

Find a tuple in a list of tuples and add if not present

有一个带有元组列表的无向图,其中每个元素都是 (id1,id2) 形式的元组。我必须找到一个新的 (s,t) 是否存在于包含所有边缘的元组列表中,如果不存在则添加元组。 edges 是元组列表

def add_edge(s: str, t: str) -> None:
       
        if (s,t) or (t,s) not in edges:
            edges.append((s,t))
        return edges

但这无法计算 (a,b) = (b,a)

形式的重复项

这会很有效

def add_edge(s: str, t: str) -> None:
       
        if (s,t) not in edge and (t,s) not in edges:
            edges.append((s,t))
        return edges
if (s,t) or (t,s) not in edges

这不是你想的那样。 (s,t) 被视为一个单独的条件。所以声明实际上是这样的:

(s,t)
or
(t,s) not in edges

并且由于 (s,t) 是一个 non-empty 序列,所以整个语句自动为真。