首页 > 解决方案 > 从具有匹配条件的集合中移除项目

问题描述

我有两组元组,每个元组是(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)}

有谁知道一种快速而优雅的方式来做到这一点?如果您有更好的方法来处理不同的数据结构,请告诉我。

标签: pythonpython-3.xlistset

解决方案


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)}

推荐阅读