2017-05-16 1 views
0
strings = ("name", "last", "middle") 
file = ["name","blabla","middle"] 
for line in file: 
    if any(s in line for s in strings): 
     print ("found") 

ich zwei Listen vergleichen will und für die gemeinsamen Strings erhalten überprüfen, und , wenn und nur wenn zwei oder mehr Strings gleich sind. Der obige Code funktioniert gut für ein, aber ich möchte es für zwei Keywords überprüfen.Python Vergleichen von zwei Listen und prüfen, ob zwei einzigartige Saiten

ZB: Es sollte nurprint(found) wenn und nur dann, wenn ‚Name‘ und ‚Mitte‘ zu finden ist. Nicht nur, wenn 'Name' gefunden wird. Es sollte nach zwei Zeichenfolgen überprüfen.

+0

Haben Sie Duplikate Werte in Ihrer Tupel oder Liste haben? Wie möchten Sie Strings mit unterschiedlichen Fällen behandeln? – styvane

Antwort

0

Zuerst können Sie Anzahl der Spiele finden list comprehension und anschließend len > 2 oder nicht

>>> num = 2 
>>> l = [i for i in strings if i in file] 
>>> if len(l) >= num: 
     print('found') 
found 
0

Wenn Sie Einzeiler wie hier ist mein Vorschlag:

# 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 
2

Sie set s nutzen können und intersection wenn Sie möchten nach den allgemeinen Elementen suchen (und es ist nicht wichtig welche).

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

Wenn Sie für feste Elemente aussehen wollen könnten Sie die issubset Methode verwenden:

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') 
Verwandte Themen