[英]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.