如何从包含另一个列表中的关键字的嵌套列表中找到所有列表

Posted

技术标签:

【中文标题】如何从包含另一个列表中的关键字的嵌套列表中找到所有列表【英文标题】:How can i find all the lists from a nested list that contains a keyword from another list 【发布时间】:2020-01-22 22:03:02 【问题描述】:

我找不到从包含另一个列表中的单词的嵌套列表中获取所有所需列表的方法。我的嵌套列表是一袋来自文本的单词。

这是我的嵌套列表的 sn-p :

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

这是我想要比较/检查的列表中的一个 sn-p (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']]

由于dhakakotwali 存在于第一个两个列表以及comparable_lst

【问题讨论】:

【参考方案1】:

您可以使用简单的列表推导:

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

【讨论】:

以上是关于如何从包含另一个列表中的关键字的嵌套列表中找到所有列表的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 JSON 字符串反序列化为包含另一个类的嵌套列表的类

BeautifulSoup:如何从包含一些嵌套 <ul> 的 <ul> 列表中提取所有 <li>?

在另一个表中搜索整个单词的表,如果找到则从结果中排除

递归遍历带有列表的嵌套字典,并替换匹配的值

在c#中使用lambda获取嵌套列表中的特定元素

如何找到所有可见的深层嵌套 ListView 项目?