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