我是靠谱客的博主 怕黑果汁,最近开发中收集的这篇文章主要介绍most_common()函数源码解读,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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位,_itemgetteroperator 模块里的 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()函数源码解读所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部