我有一个清单l1 = [('is', 'VBZ'), ('plant', 'NN')]我想检查VB列表中是否存在我使用了以下代码,但它没有给我结果。match = [x for x in l1 if 'VB' in x]
3 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
我认为你需要:
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
TA贡献1770条经验 获得超3个赞
在您的解决方案中,您要检查子字符串,为此您需要搜索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
TA贡献1820条经验 获得超9个赞
如果您没有始终在第一个索引上出现“VB”,
match = [y for y in l1 if any(['VB' in x for x in y])]
第 1 步:逐个访问元组。
第 2 步:检查被访问元组的任何字符串项中是否存在字符串 'VB'。
添加回答
举报
0/150
提交
取消