python统计前十出现最多的词
短信预约 -IT技能 免费直播动态提醒
一、描述
这是一道python面试题:
“一个可读文件,有一万行,一行只有一个单词,单词可以重复的,求出这一万行中出现频繁次数最多的前10个单词”
二、思路
先读取文件变为列表,再用集合去重得到一个参照的列表,逆排序取前10(最大即最多的的10个元素),再用参照列表中的每个元素从文件中去统计,把参照列表中的元素作为键,统计到的结果为值,放入字典,打印出来。
三、代码
#!/usr/bin/python
#coding:utf-8
all_C = []
with open("words.txt",'r') as f:
for line in f.readlines():
all_C.append(line)
#获取无重复元素
all_set=set(sorted(all_C))
#统计为字典
counts={}
for key in all_set:
counts[key] = all_C.count(key)
#获取前10个元素的个数变为列表
tens = sorted(counts.values(),reverse=True)[0:11]
print tens
#统计最终前十的元素及出现次数
tendict = {}
for k in counts.keys():
if counts[k] in tens:
tendict.setdefault(counts[k],k.strip("\n"))
print("出现最多的10个词为:%s \n") %tendict
#python tens.py
如图:
练习的文件类似 如下10001行,以文件的方式读取还是很快的:
参考其他人代码二:
#!/usr/bin/python
#coding:utf-8
result= {}
with open("words.txt",'r') as fopen:
fopen.seek(0,2)
all = fopen.tell()
fopen.seek(0,0)
while fopen.tell() < all:
lines = fopen.readline().strip()
if lines in result:
result[lines] += 1
else:
result[lines] = 1
print(sorted(result.items(),key=lambda k:k[1],reverse=True)[:11])
执行结果如图:
总结:
自己写的有点lower完全是练习,方法二高大上!还有更好的方法吗?
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341