如何搜索和计算列表中的元素集

时间:2018-02-23 15:56:17

标签: python loops

以下是我搜索并计算 pos_xist 命名列表的代码,该列表包含en.wiktionary.org的已爬网元素。该列表包含了wikitionary可能的Part of Speech标签(也有一些不是pos的标签),我搜索该列表只计算列表中有多少。 如何以更简洁的方式缩短下面的代码?

count = 0
        for i in range(0,10): #assumed maximum count of possible POS is 10
            try:
                if 'Noun' in pos_xist[i]:
                    count +=1
                elif 'Verb' in pos_xist[i]:
                    count +=1
                elif 'Pronoun' in pos_xist[i]:
                    count +=1
                elif 'Adjective' in pos_xist[i]:
                    count +=1
                elif '' in pos_xist[i]:
                    count +=1
                elif 'Pronoun' in pos_xist[i]:
                    count +=1
                elif 'Adverb' in pos_xist[i]:
                    count +=1
                elif 'Particle' in pos_xist[i]:
                    count +=1
                elif 'Conjunction' in pos_xist[i]:
                    count +=1
                elif 'Interjection' in pos_xist[i]:
                    count +=1
                elif 'Prepoisition' in pos_xist[i]:
                    count +=1
                elif 'Determiner' in pos_xist[i]:
                    count +=1
                elif 'Article' in pos_xist[i]:
                    count +=1
                else:
                    pass
            except:
                pass

3 个答案:

答案 0 :(得分:1)

您可以创建要搜索的单词列表,并使用生成器表达式迭代pos_xist中的每个项目:

words = ['Noun', 'Verb', 'Pronoun']
count = sum(any(word in item for word in words) for item in pos_xist)

如果要限制前十项,请使用切片pos_xist[:10]

不需要处理异常。

答案 1 :(得分:0)

postaglist=['Noun','Verb'...]
for item in pos_xist:
    if item in postaglist:
        count=count+1

形成所有可能的pos标签的列表并在其中搜索。

答案 2 :(得分:0)

您可以使用any builtin加上每个项目的列表,而不是等到错误被抛出。

它看起来像这样

count = 0
words = ["Noun", "Verb", "Pronoun", ...]
for pos in pos_xist:
    if any(word in pos for word in words):
        count += 1