我正在寻找一种方法来查找几组之间的独特项目。例如,以这 3 组为例。
x = {1, 2}
y = {1, 3}
z = {1, 3, 4, 5}
如何找到独特的元素?我正在寻找类似的东西。
findunique(x, y, z) # {2, 4, 5}
我尝试将 symmetry_difference
与 reduce
结合使用,但最终返回 {1, 2, 4, 5}
。
我能想到的唯一的另一件事是让一个 dict
跟踪每个项目有多少个计数,并仅返回计数为 1 的那些。然而,这似乎非常低效且不符合Python标准。解决这个问题的“正确”方法是什么?
最佳答案
使用chain
将这些集合合并到一个列表中。使用 Counter
计算每个项目出现的次数。选择只出现一次的项目并将它们组成一组。
from collections import Counter
from itertools import chain
sets = x,y,z
{x for x, cnt in Counter(chain.from_iterable(sets)).items() if cnt==1}
#{2, 4, 5}
已编辑,基于 @jedwards 的评论。
关于python - 如何测试 Python 中唯一项目的多个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52685796/