python - 从具有匹配条件的集合中移除项目
问题描述
我有两组元组,每个元组是(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)}