python - 如何测试 Python 中唯一项目的多个集合?

标签 python set unique

我正在寻找一种方法来查找几组之间的独特项目。例如,以这 3 组为例。

x = {1, 2}
y = {1, 3}
z = {1, 3, 4, 5}

如何找到独特的元素?我正在寻找类似的东西。

findunique(x, y, z) # {2, 4, 5}

我尝试将 symmetry_differencereduce 结合使用,但最终返回 {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/

相关文章:

python - 将对象追加到数组时出现意外输出

mysql - 为什么mysql unique let duplicate values to insert

excel - 如何获取每个唯一值的行数(基于两列的组合)?

python - 如何获取本地时区日期时间以在 django 中进行日期比较

Python - 获取windows文件夹ACL权限

python - 正则表达式匹配最后的模式

Python 位数组集

functional-programming - 用 lambda 函数表示集合

java - Set.of 与 Collections.singleton

python - 在列表/集合列表中查找、收集重复项