python统计前十出现最多的词

一、描述

这是一道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行,以文件的方式读取还是很快的:

总结:

感觉几万行这样的代码处理是没有问题的,再大点估计有点吃不消了,没有试过,总觉得有点lower,看官有更好的方法,请留言交流。

时间: 2024-10-10 06:39:02

python统计前十出现最多的词的相关文章

Oracle 分组统计,抽取每组前十

/**2018年6月14日 潮州ORACEL 统计2017年用电量,按行业分类抽取用电量前十*/select * from (select t.yhbh 用户编号, t.yhmc 用户名称, t.jldbh 计量点编号, (select m.dmbmmc from npmis_xt_dmbm m where m.dmfl = 'YDLXDM' and m.dmbm = t.ydlbdm) 用电类型, (select m.dmbmmc from npmis_xt_dmbm m where m.dm

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apache脚本: ips = {} with open("/root/mail_access_log-20180629") as fh:     for line in fh:         ip = line.split(" ")[0]         if 6 < le

python统计词频

一.程序分析 (1)读取文件到缓冲区 def process_file(dst): # 读文件到缓冲区 try: # 打开文件 f1=open(dst,"r") except IOError as s: print (s) return None try: # 读文件到缓冲区 bvffer=f1.read() except: print ("Read File Error!") return None f1.close() return bvffer (2)缓冲区字

如何用Python统计《论语》中每个字的出现次数?10行代码搞定--用计算机学国学

编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面是跨了学科听课,内容引人入胜,主要还是我懂得太少了,哈!我记得当时讲座的主题是有关孔子与齐鲁大地的关系,也正是那场讲座让我下决心跨学院选修了<中国古代思想文化史研究>,才让我对于诸子百家思想有了更深的认识,教授们轮番上阵,让我们学习到我们中华民族先贤智慧.也认识了历史学和中国哲学专业的同学,其中还

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来

Python统计列表中的重复项出现的次数的方法

前言 在实际工作和学习中,经常会遇到很多重复的数据,但是我们又必须进行统计,所及这里简单介绍一下统计列表中重复项的出现次数的简单方法. 实例 本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下: #方法1: mylist = [1,2,2,2,2,3,3,3,4,4,4,4] myset = set(mylist)  #myset是另外一个列表,里面的内容是mylist里面的无重复 项 for item in myset

Python进阶(三十四)-Python3多线程解读

Python进阶(三十四)-Python3多线程解读 线程讲解 ??多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度. 程序的运行速度可能加快. 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. ??线程在执行过程中与进程还是有区别的.每个独立

使用Python统计端口TCP连接数

此脚本可以用来统计某个端口上连接的IP的数量,统计连接到这一端口的所有IP.最多的IP和次数以及TCP连接状态. 涉及到Python读取网络连接统计信息以及统计计算的一些基本操作.在编写脚本的过程中预先定义了统计信息的数据结构,在向最终结果中添加统计信息时需要用到list去重功能,因此临时创建了一个列表使用set()函数去重.set()函数不能直接add字典类型,因此先将字典转成可哈希的字符串,再将去重后的字符串转成字典.其中字典.列表和集合都属于不可哈希的类型. 此脚本可以用于Windows.

全球编程语言排行榜:VB.NET首次杀入前十

Tiobe二月份编程语言排行榜出炉,最大的亮点就是VB.NET首次杀入排行榜前十.这一成绩令人吃惊,因为很多软件工程师都不喜欢VB.NET,而且微软近年来也放慢了VB.NET的脚步,一个证据就是Visual Studio 2013中没有包含任何一个新的VB.NET语言功能.然而,VB.NET开年大吉取得佳绩. (TIOBE开发语言排名是一种编程语言的流行程度的指标,该指标每月更新一次.市场占有率是根据世界各地的熟练工程师.课程和第三方供应商的数据统计来的,用于计算市场占有率的流行的搜索引擎包括谷