使 python 中的两个集合相等

equating two sets in python

假设我有两个列表 a = [2,3,4]b=[2,3,4] 那为什么

>>> set(a) in set(b)
False

虽然

>>> set(a) == set(b)
True

该集合不包含 set(2, 3, 4),它包含整数、234

您可以询问集合中是否存在单个整数:

>>> 2 in set(b)
True

>>> 3 in set(b)
True

>>> 4 in set(b)
True

documentation for set shows to check for containment you can do it two ways:

>>> set(a) <= set(b)
True

>>> set(a).issubset(set(b))
True

您正在测试 set(b) 是否包含文字集对象。 set(b) 不包含此类对象。

如果要测试 set(a) 是否为子集或相等,请使用 <=:

>>> set(a) <= set(b)
True

或使用 set.issubset() method:

>>> set(a).issubset(b)
True

任一选项也 returns True 对于较小的集合,其中所有元素也包含在 b 中:

>>> set([2, 3]) <= set(b)
True
>>> set([2, 3]).issubset(b)
True
>>> set([2, 3, 42]) <= set(b)
False
>>> set([2, 3, 42]).issubset(b)
False

可以使用比较运算符或 .issuperset

来测试一组是否包含另一组
>>> set([2, 3, 4]) >= set([2, 3])
True
>>> set([2, 3, 4]).issuperset(set([2, 3]))
True

8.7. sets — Unordered collections of unique elements