问题描述:
题目内容:
对于一个已分词的句子(可方便地扩展到统计文件中的词频):
我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!
可以用collections模块中的Counter()函数方便地统计词频,例如可用如下代码:
import collections
import copy
s = "我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!/"
s_list = s.split('/')
# 为避免迭代时修改迭代对象本身,创建一个列表的深拷贝,也可用s_list_backup = s_list[:]
s_list_backup = copy.deepcopy(s_list)
[s_list.remove(item) for item in s_list_backup if item in ',。!”“']
collections.Counter(s_list)
这个问题也可以通过字典来解决,请编写用字典解决本问题的程序,为便于OJ系统自动判断,程序最后输出某个单词的词频。
程序参考框架:
def countfeq(s):
... ...
return a dict
if __name__ == "__main__":
s = "Not clumsy person in this world, only lazy people, only people can not hold out until the last."
s_dict = countfeq(s.lower())
word = input()
基于s_dict判断word的词频并输出(可能是0次)
输入格式:
字符串
输出格式:
整数
输入样例(因为oj系统限制,测试用例设为判断英文单词个数(不区分大小写,全部转换成小写字符处理),请注意英文标点,假设仅包含,和.):
not
输出样例:
2
时间限制:1500ms内存限制:32000kb
python实现:
from collections import Counter
def countfeq(s):
s_list = s.split(' ')
s_list_copy = [item for item in s_list]
for index, item in enumerate(s_list_copy):
if '.' in item:
item = item.replace('.','')
if ',' in item:
item = item.replace(',','')
s_list_copy[index] = item
return Counter(s_list_copy)
if __name__ == "__main__":
s = "Not clumsy person in this world, only lazy people, only people can not hold out until the last."
s_dict = countfeq(s.lower())
word = input()
print(s_dict[word])