Python列表关键词计数:未出现单词如何补零?
问题描述
需要从列表中查找指定关键词的出现次数,若关键词未在列表元素中出现则返回0。示例中collabor出现4次,part出现0次;当前代码输出仅为[['collabor', 4]],期望输出为[['collabor', 4], ['part', 0]]。
现有代码如下:
str1 = ["collabor", "part"] x10 = [] for y in wordlist: for string in str1: if y.find(string) != -1: x10.append(y) from collections import Counter x11 = Counter(x10) your_list = [list(i) for i in x11.items()] rowssorted = sorted(your_list, key=lambda x: x[0]) print(rowssorted)
解决方案
原代码的问题在于Counter只会统计实际匹配到的元素关联关键词,未找到的关键词不会被纳入结果。需要主动遍历所有指定关键词,从统计结果中获取计数,未匹配到则设为0。
修改后的代码:
from collections import Counter str1 = ["collabor", "part"] x10 = [] for y in wordlist: for string in str1: if y.find(string) != -1: x10.append(string) # 改为直接添加匹配到的关键词,统计更精准 x11 = Counter(x10) # 遍历所有指定关键词,确保每个词都有对应结果 your_list = [[word, x11.get(word, 0)] for word in str1] rowssorted = sorted(your_list, key=lambda x: x[0]) print(rowssorted)
改动说明
- 将
x10.append(y)改为x10.append(string):原代码添加的是包含关键词的原元素,修改后直接添加匹配到的关键词,让Counter直接统计关键词的出现次数,逻辑更清晰。 - 用列表推导式遍历
str1:通过x11.get(word, 0)获取每个关键词的计数,不存在则返回0,确保所有指定关键词都出现在最终结果中。 - 保持按关键词排序的逻辑,输出符合期望格式。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

