Как я могу найти все списки из вложенного списка, который содержит ключевое слово из другого списка - PullRequest
2 голосов
/ 22 сентября 2019

Я не могу найти выход, чтобы получить все нужные списки из вложенного списка, который содержит слова из другого списка.Мой вложенный список представляет собой пакет слов из текстов.

Это фрагмент моего вложенного списка:

[['what',
  'selection',
  'in',
  'dhaka'],
 ['emergency',
  'donors',
  'in',
  'kotwali',
  'posts'],
 ['the',
  'threat',
  'monsoon',
  'progresses',
  'hitting',
  ]

Это фрагмент моего списка, с которым я хочу сравнить / проверить(comparable_lst):

['dhaka',
 'kotwali',
 'khilkhet',
 'khilgaon',
 'demra',
 'turag']

Я пробовал это

[i for e in bag_of_words for i in comparable_lst if e in i]

Мой ожидаемый результат:

[['what',
  'selection',
  'in',
  'dhaka'],
 ['emergency',
  'donors',
  'in',
  'dhaka',
  'posts']]

как dhaka и kotwaliсуществует в обоих первых списках, а также в comparable_lst

1 Ответ

0 голосов
/ 22 сентября 2019

Вы можете использовать простое понимание списка:

nested_lists = [['what',
  'selection',
  'in',
  'dhaka'],
 ['emergency',
  'donors',
  'in',
  'kotwali',
  'posts'],
 ['the',
  'threat',
  'monsoon',
  'progresses',
  'hitting',
  ]]

words = ['dhaka',
 'kotwali',
 'khilkhet',
 'khilgaon',
 'demra',
 'turag']

want = list(l for l in nested_lists if any(w in l for w in words))

print(want)

Вывод:

[['what', 'selection', 'in', 'dhaka'], ['emergency', 'donors', 'in', 'kotwali', 'posts']]

Используйте функцию any, чтобы выяснить, присутствует ли какое-либо значение в words вnested_lists

...