Python比较两个列表并检查两个唯一的字符串

时间:2017-05-16 10:15:27

标签: python list intersection

strings = ("name", "last", "middle")
file = ["name","blabla","middle"]
for line in file:
    if any(s in line for s in strings):
        print ("found")

我想比较两个列表并检查公共字符串,当且仅当两个或多个字符串相同时。 上面的代码适用于一个但我希望它检查两个关键字。

例如: print(found)如果且仅' name'和'中间'找到了。不仅如果名称'找到了。它应该检查两个字符串。

3 个答案:

答案 0 :(得分:2)

如果您想检查公共项目(并且哪些项目并不重要),您可以使用setintersection

if len(set(strings).intersection(file)) >= 2:  # at least 2 common values
    print('found')

如果您想查找固定项目,可以使用issubset方法:

strings = ("name", "last", "middle")
file = ["name","blabla","middle"]

check = {'name', 'middle'}  # that's a set containing the items to look for.
if check.issubset(strings) and check.issubset(file):
    print('found')

答案 1 :(得分:0)

首先,您可以使用list comprehension然后使用len > 2或不使用

查找匹配项数
>>> num = 2
>>> l = [i for i in strings if i in file]
>>> if len(l) >= num:
        print('found')
found

答案 2 :(得分:0)

如果你喜欢单行,我的主张是:

# If two or more elemnts from listA are present in listB returns TRUE
def two_or_more(listA, listB):
    return sum(map(lambda x : x in listB, listA)) > 1