2017-05-11 28 views
2

私は2つのリストを持ち、そのうちの1つは他のリストの部分文字列を持ちます。Pythonの2つのリスト間の部分文字列一致

Sally Hope 
Bob John 
Seth Whale 

リスト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)] 

出力:

[('Sally Hope does not like chocolate', 14) 
('Sally Hope is great', 45) 
('Seth Whale likes swimming', 43)] 
Iは、例えば リストAをリストAに

をストリングに一致しているリストBからすべての行を引き出したいです

amatchとdpylrフィルタでRでこれを試しましたが、目的の出力が得られませんでしたRは私の記憶に失敗します(リストBは2m行あります)。これをPythonで行う最も効率的な方法は何ですか?

答えて

1

Pythonはlist comprehension

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

結果

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

list_bはタプルのリストである必要があり、私は[] []ではなく、ループ内list_bとして個々の要素にアクセスすることができますよ。更新された質問! – lilipunk

+0

次に、aのbに対してaのために 'output = [(b、n))を使用します。 –

+2

@lilipunkこれを試してみてください: 'output = [j for list_a in list_a in list_b in i [j] [0125]]' – mtilhan

関連する問題