查找仅属于集合列表中的一个集合的项目

时间:2017-08-18 19:44:57

标签: python

问题:我有一个集合列表,如何找到每个集合中唯一的项目?

=====

我正在玩nltk并且很好奇每个语料库中哪些单词是唯一的,所以我制作了一个快速的脚本来检查每个语料库之间的单词集的对称差异。由于回想起来很明显的原因,这不起作用(见图),但现在我仍然坚持如何找到每套中的独特物品?

我很惊讶在SO上找不到这样的东西所以我以为我发布了它

[1]

我的代码:

import pandas as pd
import re
from nltk.corpus import words, brown, webtext, reuters, wordnet, gutenberg

words_only_in_one_corpus = set()
for corpus in {words, brown, webtext, reuters, wordnet, gutenberg}:
    words_only_in_one_corpus ^= {word.lower() for word in set(corpus.words())}

df = pd.DataFrame(data=list(words_only_in_one_corpus), columns=["words"])
for corpus in {words, brown, webtext, reuters, wordnet, gutenberg}:
    corpus_name = re.findall(".*\\\\(.*?)'>", str(corpus))[-1]
    if corpus_name == "words": corpus_name = "words_corpus"

    print(corpus_name, "...")
    df[corpus_name] = df.words.isin( {word.lower() for word in set(corpus.words())} )

df

1 个答案:

答案 0 :(得分:0)

假设Arr是集合列表。

newArr = []
for theSet in Arr:

    tempSet = ()

    for item in theSet:

        check = 1

        for anotherSet in Arr:

            if item in anotherSet and anotherSet != theSet:
                check *= 0
            elif anotherSet.count(item) > 1:
                check *= 0

        if check == 1:
            tempSet += item

    newArr.append(tempSet)