Цикл по списку, чтобы найти соответствие для другого списка - PullRequest
0 голосов
/ 07 марта 2020

Допустим, есть список, подобный этому:

[[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5]]

Выглядит так:

[['1'], ['Hermann', 'Hesse', 'Der', 'Steppenwolf'], ['Erzählung'], ['Vorwort', 'des', 'Herausgebers'],
['Dieses', 'Buch', 'enthält', 'die', 'uns', 'geblichenen', 'Aufzeichnungen', 'jenes', 'Mannes', ',',
'welchen', 'wir', 'mit', 'einem', 'Ausdruck', ',', 'den', 'er', 'selbst', 'mehrmals', 'gebrauchte', ',',
'den', '«', 'Steppenwolf', '»', 'nannten', '.']]

Теперь мне нужно выбрать все списки в списке списков, которые содержат любой из строки, перечисленные здесь:

vds_nennen = ['nennen', 'nenne', 'nennst', 'nennt', 'nenne', 'nennest', 'nannte', 
'nanntest', 'nannten', 'nanntet', 'nennte', 'nenntest', 'nennten', 'nenntet', 'genannt'] 

Таким образом, желаемый вывод:

[['Dieses', 'Buch', 'enthält', 'die', 'uns', 'geblichenen', 'Aufzeichnungen', 
'jenes', 'Mannes', ',', 'welchen', 'wir', 'mit', 'einem', 'Ausdruck', ',', 'den',
'er', 'selbst', 'mehrmals', 'gebrauchte', ',', 'den', '«', 'Steppenwolf', '»', 
'nannten', '.']]

(поскольку последний список в списке списков содержит 'nannten', который vds_nennen список также имеет )

Я пытался l oop по списку vds_nennen таким образом:

[[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5] if [vds for vds in vds_nennen] in s]

Но ничего не получил:

[]

Заранее извините за мой невежество в цикле ... Любое предложение будет оценено.

1 Ответ

1 голос
/ 07 марта 2020

Вам необходимо написать выражение if, чтобы использовать any:

[[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5] if any([vds in s for vds in vds_nennen])]

Вы также можете постобработать свой исходный список (назовите его tt), например,

[t for t in tt if any([vds in t for vds in vds_nennen])]
...