我有一组集合,我想检查两个或多个集合是否相同。我不需要按照精确的顺序查看这些集合。
示例列表
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)
列表中有两个相同的集合,但编号顺序不同。如何检查这些?
例如,您可以使用freezeset和Counter,如下所示:
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。