2017-05-11 5 views
2

Ich habe zwei Listen, von denen eine Teilstrings der anderen Liste hat. Ich möchte alle Zeilen aus der Liste B die passenden Teil in der Liste A.Partielle Zeichenfolge Übereinstimmung zwischen zwei Listen in Python

Zum Beispiel Liste A haben ziehen:

Sally Hope 
Bob John 
Seth Whale 

Liste B

[('Sally Hope does not like chocolate', 14) 
('Sally Hope is great', 45) 
('Seth Whale likes swimming', 43) 
('Marley does not like walks', 56) 
('John goes on walks', 55)] 

Ausgang:

[('Sally Hope does not like chocolate', 14) 
('Sally Hope is great', 45) 
('Seth Whale likes swimming', 43)] 

Ich habe dies in R mit amatch und dpylr Filter versucht, aber nicht die gewünschte Ausgabe erhalten und R fehlschlägt mir im Speicher (Liste B hat ~ 2 m Zeilen). Was ist der effizienteste Weg, dies in Python zu tun?

Antwort

1

Python haben list comprehension,

output = [j for i in list_a for j in list_b if i in j[0]] 

Ergebnis

[('Sally Hope does not like chocolate', 14), 
('Sally Hope is great', 45), 
('Seth Whale likes swimming', 43)] 
+0

list_b eine Liste von Tupeln ist, ich bin in der Lage, die einzelnen Elemente wie list_b [] [], aber nicht in der Schleife zuzugreifen . aktualisierte Frage! – lilipunk

+0

Dann verwenden Sie output = [(b, n) für a in A für b, n in B wenn a in b] '. –

+2

@lilipunk versuchen dies: 'output = [j für i in list_a für j in list_b wenn ich in j [0]]' – mtilhan

Verwandte Themen