概述
Counter类中的most_common()函数
parameter(参数):
传进去一个可选参数n(代表获取数量最多的前n个元素,如果不传参数,代表返回所有结果)
return(返回):
返回一个列表(里面的元素是一个元组,元组第0位是被计数的具体元素,元组的第1位是出现的次数,如:[('a',1),[('b'),2],[('c',3)]])当多个元素计数值相同时,按照字母序排列。
下边是 most_common 的源码:
def most_common(self, n=None):
if n is None:
return sorted(self.iteritems(), key=_itemgetter(1), reverse=True)
return _heapq.nlargest(n, self.iteritems(), key=_itemgetter(1))
先来看n是None的情况,因为Counter类继承自dict,所以 self.iteritems
得到的是键值对元组的列表,用 sorted
对这个列表进行排序,因为是要按照元组的第1位的数字从大到小的顺序来排序,所以key应该是元组的第1位。代码中用 _itemgetter(1)
来取出元组的第1位,_itemgetter
是 operator
模块里的 itemgetter
类
如果 n
不为 None
,调用了 heapq
(最上边导入时将heapq
as 重命名成了 _heapq
) 模块中的 nlargest
函数,这个函数的实现有些略微复杂,等以后有时间再去看,直接看下函数的介绍:
Find the n largest elements in a dataset.
Equivalent to: sorted(iterable, key=key, reverse=True)[:n]
这个函数的调用结果和用 sorted
排序后再取出前n个结果等价。
也就是 sorted(self.iteritems(), key=_itemgetter(1), reverse=True)[:n]
最后
以上就是怕黑果汁为你收集整理的most_common()函数源码解读的全部内容,希望文章能够帮你解决most_common()函数源码解读所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复