繁体   English   中英

如果元组包含子字符串,则标识元组列表中的元组

[英]Identify the tuple in the list of tuples if the tuple contains substring

我有一份清单

l1 = [('is', 'VBZ'), ('plant', 'NN')]

我想检查列表中是否存在VB

我使用了以下代码,但它没有给我结果。

match = [x for x in l1 if 'VB' in x]

我想你需要:

l1 = [('is', 'VBZ'), ('plant', 'NN')]

print([x for x in l1 if 'VB' in x[1]])

产量

[('is', 'VBZ')]

为什么你的代码不起作用

你正在检查VB是否在('is', 'VBZ') ,而不是。 据我所知,这些是POS tags并且总是在第一个索引。 您需要检查列表中每个元组的索引1处是否存在VB

如果您没有始终在第一个索引上发生'VB',

match = [y for y in l1 if any(['VB' in x for x in y])]

第1步:逐个访问元组。

步骤2:检查访问元组的任何字符串项中是否存在字符串'VB'。

在您的解决方案中,您要检查子字符串,因为您需要搜索元组中的元素。

如果您想搜索确切的字符串,那么您的解决方案是正确的

'VBZ' in ('is', 'VBZ')
==> True

'VB' in ('is', 'VBZ')
==> False

如果你知道2元素将在元组中

[tu for tu in l1 if 'VB' in (tu[1] or tu[0])] 

==> [('is', 'VBZ')]

如果你不确定元组中的元素

[tu for tu in l1 if any(['VB' in elem for elem in tu])] 
==> [('is', 'VBZ')]


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM