检查列表中的值是否存在于另一个没有附加字符的列表中

Check if values from the list exist in another list without additional characters

我有 2 个列表:

a = ["ad", "news", "something else", "another something"]
c = ["coupon", "ad"]

列表 a(和 c)必须仅包含列表 b 中的字符。同样在列表 a(和 c )中可能会丢失列表 b 中的字符,但来自该列表必须出现或部分出现:

b = ["coupon", "ad", "news"]

因此,list a(因为它包含额外的字符)是错误的,而 list c 是可以的(尽管 - 它不没有“新闻”)。

我开始写 nested if 但我卡住了

for x in ["coupon", "ad", "news"]:
    for z in ["ad", "news", "something else", "another something"]:
        print(x,z)

也许您正在寻找 set.issubset:

for k, lst in {'a': a, 'c': c}.items():
    if set(lst).issubset(b):
        print(f'{k} is OK')
    else:
        print(f'{k} is not OK')

输出:

a is not OK
c is OK

检查列表 'a' 中是否存在 'b'

中不存在的元素
for x in a:
    if x not in b:
        print("Not correct")

我定义了2个函数。

第一个将接受 2 个字符串列表,return 如果第一个列表中的任何字符串存在于第二个列表中:

def validate(lst1, lst2):
    return all(i in lst2 for i in lst1)

a = ["ad", "news", "something else", "another something"]
c = ["coupon", "ad"]

b = ["coupon", "ad", "news"]

print(validate(a, b))
print(validate(c, b))

输出:

False
True

第二个检查第一个列表中每个字符串使用的所有字符是否存在于第二个列表中的任何字符串中:

def validate(lst1, lst2):
    characters = ''.join(lst2)
    return all(j in characters for i in lst1 for j in i)

a = ["ad", "news", "something else", "another something"]
c = ["coupon", "ad"]

b = ["coupon", "ad", "news"]

print(validate(a, b))
print(validate(c, b))

输出:

False
True