猿问

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

我有一个清单

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

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

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

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


UYOU
浏览 181回答 3
3回答

哈士奇WWW

我认为你需要:l1 = [('is', 'VBZ'), ('plant', 'NN')]print([x for x in l1 if 'VB' in x[1]])输出[('is', 'VBZ')]为什么您的代码不起作用你正在检查是否VB在里面('is', 'VBZ'),它不在。据我了解,这些是POS tags并且将始终处于第一索引。您需要检查VB列表中每个元组的索引 1 是否存在

德玛西亚99

在您的解决方案中,您要检查子字符串,为此您需要搜索Tuple 中的元素。如果您想搜索确切的字符串,那么您的解决方案是正确的'VBZ' in ('is', 'VBZ')==> True'VB' in ('is', 'VBZ')==> False如果你知道exatly 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')]

慕妹3146593

如果您没有始终在第一个索引上出现“VB”,match = [y for y in l1 if any(['VB' in x for x in y])]第 1 步:逐个访问元组。第 2 步:检查被访问元组的任何字符串项中是否存在字符串 'VB'。
随时随地看视频慕课网APP

相关分类

Python
我要回答