[英]How do I check that a subset is included in a list?
我有以下列表:
l =
[
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]
我想删除所有不符合以下约束的列表:列表必须包含['s5','s6','s8']
和['s15', 's23']
:
l1 = ['s5','s6','s8']
l2 = ['s15', 's23']
预期结果是:
[
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']
]
我该怎么做?
我尝试使用set(l1).issubset(t)
和set(l2).issubset(l)
,但set
只返回唯一值。
您可以使用filter
和set
来检查条件。
使用filter
,您也可以维护订单
>>> list(filter(lambda x : not(set(l1+l2)-set(x)), l))
>>> [['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']]
我想你可以做一个会员检查:
l = [
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]
l1 = ['s5','s6','s8']
l2 = ['s15', 's23']
l1_s = ''.join(l1)
l2_s = ''.join(l2)
print([x for x in l if l1_s in ''.join(x) and l2_s in ''.join(x)])
# [['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
# ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']]
l1 = ['s5', 's6', 's8']
l2 = ['s15', 's23']
l = [
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]
result = []
for a in l:
found = True
for x in l1:
if x not in a:
found = False
for x in l2:
if x not in a:
found = False
if found:
result.append(a)
print(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.