是否有一种最佳方法可以在 Python 的 N 个集合中找到唯一元素?

Is there an optimal way to find unique elements within N sets with Python?

我目前正在处理一个示例,其中我有 45 个数据框和大约 60,000 个字符串条目。我想知道与我拥有的所有其他数据帧(或集)相比,哪些字符串是唯一的,示例中为 entry_df['strings']

我尝试使用库 supervenn (https://github.com/gecko984/supervenn) 绘制不同集合中的独特元素和共享元素,但我的数据太大而无法使用该库绘制。

是否有找到这些独特元素的最佳方法?我想一次比较至少 9 个组,因此 A.intersect B, C, D, E, F, G, H, I = ∅。我想过迭代循环每个集合并删除公共元素,但我没有找到优化内存使用的方法。我用来绘制 supervenn 图的代码是:

entry_files = glob('../*/dataframe.csv')

allentries = []
labels = []

for f in entry_files:
    entry_df = pd.read_csv(f)
    string_set = set(entry_df['strings'].unique().tolist())
    allentries.append(string_set)
    labels.append(f'{entry_df.type.unique()}')

import supervenn

plt.figure(figsize=(16, 8))
supervenn.supervenn(allentries, labels, widths_minmax_ratio=0.45)

如果需要在所有集合中只放置一次的元素,可以对集合使用^操作。

set1 ^ set2

returns set1 或 set2 中所有元素的集合,但不是两者。