码迷,mamicode.com
首页 > 其他好文 > 详细

如何统计序列中元素的频度

时间:2019-11-15 20:09:12      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:col   common   标准库   方案   数据   ict   random   for   sort   

方案一:将序列转换为字典{元素:频度},根据字典中的值排序

#1.sorted排序
from random import randint
data = [randint(0, 20) for _ in range(30)] #创建数据
d = dict.fromkeys(data, 0) #创建字典
for x in data:
    d[x] += 1 #统计词频

#((v, k) for k, v in d.items()):生成器解析,所需空间少
sorted(((v, k) for k, v in d.items()), reverse=True)[:3] #根据词频排序并截取前3

#2.heapq(堆)
import heapq
#heapq.nlargest 取前n个最大;heapq.nsmallest 取前n个最小
heapq.nlargest(3, ((v, k) for k, v in d.items()))

执行结果:

[(5, 2), (3, 14), (3, 13)]

方案二:使用标准库collections中的Counter对象

from collections import Counter
c = Counter(data) #统计词频
c.most_common(3)

执行结果:

[(2, 5), (13, 3), (14, 3)]

如何统计序列中元素的频度

标签:col   common   标准库   方案   数据   ict   random   for   sort   

原文地址:https://www.cnblogs.com/huowuyan/p/11869232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!