在集合列表中查找重复的集合

SKY*_*ine 5 python list set

我有一组集合,我想检查两个或多个集合是否相同。我不需要按照精确的顺序查看这些集合。

示例列表

list = [
    {7, 12, 16, 17, 31},
    {33, 4, 8, 10, 46},
    {6, 40, 43, 22, 29},
    {2, 35, 9, 41, 31},
    {34, 38, 42, 43, 45},
    {38, 16, 20, 25, 30},
    {2, 10, 45, 19, 25},
    {4, 44, 41, 14, 16},
    {39, 40, 16, 25, 28},
    {34, 37, 45, 19, 23},
    {4, 41, 44, 14, 16},
]
Run Code Online (Sandbox Code Playgroud)

列表中有两个相同的集合,但编号顺序不同。如何检查这些?

Dan*_*ejo 2

例如,您可以使用freezesetCounter,如下所示:

from collections import Counter

lst = [{7, 12, 16, 17, 31}, {33, 4, 8, 10, 46}, {6, 40, 43, 22, 29}, {2, 35, 9, 41, 31}, {34, 38, 42, 43, 45},
        {38, 16, 20, 25, 30}, {2, 10, 45, 19, 25}, {4, 44, 41, 14, 16}, {39, 40, 16, 25, 28}, {34, 37, 45, 19, 23},
        {4, 41, 44, 14, 16}]

counts = Counter(frozenset(s) for s in lst)

print([e for e, c in counts.items() if c > 1])
Run Code Online (Sandbox Code Playgroud)

输出

[frozenset({16, 4, 41, 44, 14})]
Run Code Online (Sandbox Code Playgroud)

作为旁注,避免使用 list 作为名称,它会隐藏内置list

  • 不知道 freezeset,它工作得很好。谢谢! (2认同)