Python 检查集合是否是集合/多集合列表的子集
假设我有一个Python 检查集合是否是集合/多集合列表的子集,python,Python,假设我有一个s1={'bread'}和一个l1=[{'milk'、'酸奶'、'鸡蛋'}、{'bread'、'牛奶'}]。由于'bread'在第二个集合中,我希望它返回True。如果我将它放入for循环,它将检查s1是否在第一个元素中,然后它将检查s1是否在第二个元素中。我怎么能同时做呢?比如: s1.issubset(l1[0]) or s1.issubset(l1[1]) or .... s1.issubset(l[n]) 因此,结果将是True您可以使用: 输出 True 您可以使用
s1={'bread'}
和一个l1=[{'milk'、'酸奶'、'鸡蛋'}、{'bread'、'牛奶'}]
。由于'bread'
在第二个集合中,我希望它返回True
。如果我将它放入for循环
,它将检查s1
是否在第一个元素中,然后它将检查s1
是否在第二个元素中。我怎么能同时做呢?比如:
s1.issubset(l1[0]) or s1.issubset(l1[1]) or .... s1.issubset(l[n])
因此,结果将是True
您可以使用:
输出
True
您可以使用
for
循环检查每个元素,并使用或
s1 = {'bread'}
l1 = [{'milk', 'yogurt', 'eggs'}, {'bread', 'milk'}]
result = False
for item in l1:
result = result or s1.issubset(item)
print(result)
或者使用if
检查它是否为真,并使用break退出循环
s1 = {'bread'}
l1 = [{'milk', 'yogurt', 'eggs'}, {'bread', 'milk'}]
result = False
for item in l1:
if s1.issubset(item):
result = True
break # exit loop because there is no need to check rest items
print(result)
如果我正确理解您的问题,另一个选择是将
l1
转换为一个大集合。您可以使用itertools.chain
from itertools import chain
s1 = {'bread'}
s2 = {'toast'}
l1 = [{'milk', 'yogurt', 'eggs'}, {'bread', 'milk'}]
print(s1 <= set(chain(*l1)))
print(s2 <= set(chain(*l1)))
“同时”是什么意思?最好对循环使用标准
。检查所有项目并使用或-真或假给出真
我进行了编辑,因此我想检查s1
是否是l1[0]的子集,或者s2
是否是l1[1]的子集依此类推,直到l1:result=result或s1中的项的列表的最后一个元素result=False
。issubset(item)
Nice!我想这就是我的目标。所以any
方法允许我检查它的所有内容,本质上?是的@xndr它确实做到了这一点。
from itertools import chain
s1 = {'bread'}
s2 = {'toast'}
l1 = [{'milk', 'yogurt', 'eggs'}, {'bread', 'milk'}]
print(s1 <= set(chain(*l1)))
print(s2 <= set(chain(*l1)))
True
False