有没有一种快速的方法来检查一个集合是否完全包含另一个集合?
类似于:
>>>[1, 2, 3].containsAll([2, 1])
True
>>>[1, 2, 3].containsAll([3, 5, 9])
False
发布于 2010-05-04 21:57:41
这些都是列表,但如果您真正想要的是集合,则可以使用issubset
方法。
>>> s = set([1,2,3])
>>> t = set([1,2])
>>> t.issubset(s)
True
>>> s.issuperset(t)
True
对于一个列表,除了检查每个元素,你不能做得更好。
发布于 2010-05-04 22:06:35
为了完整性:这等同于issubset
(尽管可以说没有那么明确/可读):
>>> set([1,2,3]) >= set([2,1])
True
>>> set([1,2,3]) >= set([3,5,9])
False
发布于 2016-04-13 20:42:13
有一个选项保持不变--减法:
>>> {1, 2} - {1, 2, 3}
set([])
>>> {1, 2, 3} - {1, 2}
set([3])
基本上是检查第一个列表中的哪些元素不在第二个列表中。
我发现它非常方便,因为您可以显示缺少哪些值:
>>> def check_contains(a, b):
... diff = a - b
... if not diff:
... # All elements from a are present in b
... return True
... print('Some elements are missing: {}'.format(diff))
... return False
...
>>> check_contains({1, 2}, {1, 2, 3})
True
>>> check_contains({1, 2, 3}, {1, 2})
Some elements are missing: set([3])
False
https://stackoverflow.com/questions/2765892
复制相似问题