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

2024-09-29 03:36:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

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

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

我使用了下面的代码,但它没有给出结果。在

^{2}$

Tags: 代码l1列表isnn单子vbplant
3条回答

如果“VB”不总是出现在第一个索引上

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

第一步:逐个访问元组。在

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

我认为你需要:

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

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

输出

^{pr2}$

代码为什么不工作

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

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

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

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

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

如果你知道两个元素 将在元组中

^{pr2}$

如果不确定元组中的元素

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


相关问题 更多 >