从元组列表中获取特定元素

时间:2019-11-09 08:29:42

标签: python tuples spacy

在使用Spacy时,我有以下内容:

import spacy

nlp = spacy.load('en_core_web_lg')

sentence = "a quick John jumps over the lazy dog"

tag_entities = [(x, x.ent_iob_, x.ent_type_) for x in nlp(sentence)]
inputlist = tag_entities

print (inputlist)

[(a, 'O', ''), (quick, 'O', ''), (John, 'B', 'PERSON'), (jumps, 'O', ''), (over, 'O', ''), (the, 'O', ''), (lazy, 'O', ''), (dog, 'O', '')]

这是一个元组列表。我要提取人员元素。这就是我要做的:

for i in inputlist:
  if (i)[2] == "PERSON":
    print ((i)[0])

John

有什么更好的方法?谢谢。

2 个答案:

答案 0 :(得分:2)

如果第二个元素是第一个列表中的PERSON,要保留所有第一个元素,请使用列表理解符号,并在末尾使用if

filtered_taglist = [x for x,_,type in tag_entities if type == "PERSON"]

这对应于

filtered_taglist = []
for x,_,type in inputlist:
    if type == "PERSON":
        filtered_taglist.append(x)

答案 1 :(得分:1)

您可以在创建该列表时使用if

tag_entities = [(x, x.ent_iob_, x.ent_type_) for x in nlp(sentence) if x.ent_type_ == 'PERSON']

或者直接是这些名称:

names = [(x, x.ent_iob_, x.ent_type_)[0] for x in nlp(sentence) if x.ent_type_ == 'PERSON']