Python 从具有匹配条件的集合中删除项

Python 从具有匹配条件的集合中删除项,python,python-3.x,list,set,Python,Python 3.x,List,Set,我有两组元组,其中每个元组都是(x,y,flag)。我想将它们组合在一起,这样组合函数将删除并替换集合A中的任何x,y值,而不管标志是什么。例如: A = {(1,1.5,1),(1,2.5,0),(2,2.5,1)} B = {(1,1,1),(1,2.5,1),(2,2.5,0)} f(A,B) >>> {(1,1,1),(1,1.5,1),(1,2.5,1),(2,2.5,0)} 有人知道一种快速而优雅的方法吗?如果您有更好的方法来处理不同的数据结构,请告诉我 A

我有两组元组,其中每个元组都是
(x,y,flag)
。我想将它们组合在一起,这样组合函数将删除并替换集合A中的任何x,y值,而不管标志是什么。例如:

A = {(1,1.5,1),(1,2.5,0),(2,2.5,1)}
B = {(1,1,1),(1,2.5,1),(2,2.5,0)}

f(A,B)
>>> 
{(1,1,1),(1,1.5,1),(1,2.5,1),(2,2.5,0)}
有人知道一种快速而优雅的方法吗?如果您有更好的方法来处理不同的数据结构,请告诉我

A = {(1,1.5,1),(1,2.5,0),(2,2.5,1)}
B = {(1,1,1),(1,2.5,1),(2,2.5,0)}

print(set({(a, b): (a, b, c) for s in [A, B] for (a, b, c) in s}.values()))
印刷品:

{(1, 2.5, 1), (1, 1, 1), (2, 2.5, 0), (1, 1.5, 1)}
印刷品:

{(1, 2.5, 1), (1, 1, 1), (2, 2.5, 0), (1, 1.5, 1)}

您必须手动迭代和检查,然后我认为使用下面的建议答案中的集合理解是可行的,但我不理解下面所述的删除/替换规则。如果(1,1,1)不在A中,那么(1,1,1)是如何进入结果的?因为这是两个集合的并集,因此B项替换A项,如果它们存在,您必须手动迭代和检查,然后我认为使用集合理解是可行的,如下面的建议答案所示,但我不理解下面所述的移除/替换规则。如果(1,1,?)不在A中,那么(1,1,1)是如何进入结果的?因为这是两个集合的并集,使得B项替换A项(如果存在的话)