多组独特元素

Nep*_*Nep 6 python

我有一个set如下所示的列表。我想编写一个函数来返回在这些集合中只出现一次的元素。我写的函数有点工作。我想知道,有没有更好的方法来处理这个问题?

s1 = {1, 2, 3, 4}
s2 = {1, 3, 4}
s3 = {1, 4}
s4 = {3, 4}
s5 = {1, 4, 5}

s = [s1, s2, s3, s4, s5]

def unique(s):
    temp = []
    for i in s:
        temp.extend(list(i))

    c = Counter(temp)
    result = set()
    for k,v in c.items():
        if v == 1:
            result.add(k)

    return result

unique(s) # will return {2, 5}

Run Code Online (Sandbox Code Playgroud)

abc*_*abc 7

您可以直接使用 Counter ,然后获取仅出现一次的元素。

from collections import Counter
import itertools
c = Counter(itertools.chain.from_iterable(s)) 
res = {k for k,v in c.items() if v==1}
# {2, 5}
Run Code Online (Sandbox Code Playgroud)