3 回答

TA貢獻1799條經驗 獲得超6個贊
我認為你需要:
l1 = [('is', 'VBZ'), ('plant', 'NN')]
print([x for x in l1 if 'VB' in x[1]])
輸出
[('is', 'VBZ')]
為什么您的代碼不起作用
你正在檢查是否VB在里面('is', 'VBZ'),它不在。據(jù)我了解,這些是POS tags并且將始終處于第一索引。您需要檢查VB列表中每個元組的索引 1 是否存在

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')]

TA貢獻1820條經驗 獲得超9個贊
如果您沒有始終在第一個索引上出現(xiàn)“VB”,
match = [y for y in l1 if any(['VB' in x for x in y])]
第 1 步:逐個訪問元組。
第 2 步:檢查被訪問元組的任何字符串項中是否存在字符串 'VB'。
添加回答
舉報