前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python统计前十出现最多的词

python统计前十出现最多的词

作者头像
py3study
发布2020-01-08 15:55:35
3.6K0
发布2020-01-08 15:55:35
举报
文章被收录于专栏:python3python3

一、描述

     这是一道python面试题:

     “一个可读文件,有一万行,一行只有一个单词,单词可以重复的,求出这一万行中出现频繁次数最多的前10个单词”

二、思路

       先读取文件变为列表,再用集合去重得到一个参照的列表,逆排序取前10(最大即最多的的10个元素),再用参照列表中的每个元素从文件中去统计,把参照列表中的元素作为键,统计到的结果为值,放入字典,打印出来。

三、代码

代码语言:javascript
复制
#!/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

如图:

wKioL1nN5o_xRcELAAGkpo338gw245.png
wKioL1nN5o_xRcELAAGkpo338gw245.png

练习的文件类似 如下10001行,以文件的方式读取还是很快的:

wKioL1nN50vCAnEpAAMEGH1zANI990.png
wKioL1nN50vCAnEpAAMEGH1zANI990.png

参考其他人代码二:

代码语言:javascript
复制
#!/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])

执行结果如图:

wKioL1nbUTCTID2hAAFlGKj6FLM140.png
wKioL1nbUTCTID2hAAFlGKj6FLM140.png

总结:

        自己写的有点lower完全是练习,方法二高大上!还有更好的方法吗?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档