counter()函数和most_common()函数
生活随笔
收集整理的這篇文章主要介紹了
counter()函数和most_common()函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
most_common()函數是collections模塊中counter類的函數,當我們使用它時,首先要導入collections模塊
counter()函數返回的是一個類似于字典的counter計數器,如下:
?
Counter類中的most_common(n)函數:
傳進去一個可選參數n(代表獲取數量最多的前n個元素,如果不傳參數,代表返回所有結果)
return返回一個列表(里面的元素是一個元組,元組第0位是被計數的具體元素,元組的第1位是出現的次數,如:[('a',1),[('b'),2],[('c',3)]])當多個元素計數值相同時,按照字母序排列。
most_common()函數的源碼:
import heapq as _heapq 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))由源碼可知,most_commom()函數不傳參數值時,用sort()函數排序,排序的根據是以第2個元素數值進行排序的,返回的是從大到小的順序的所有結果,如果有參數n,調用了?heapq模塊中的?nlargest?函數返回的前n個的元素結果。(其中?_heapq是上邊導入時將heapq?重命名成了?_heapq)
其中heapq.nlargest()函數功能類似于如下的函數:
sorted(iterable, key=key, reverse=True)[:n]most_commom()函數用法示例如下
>>> from collections import Counter >>> a=[1,2,4,5,6,4,6,8,9,1,1,2,5,9] >>> b=Counter(a) >>> print(b) Counter({1: 3, 2: 2, 4: 2, 5: 2, 6: 2, 9: 2, 8: 1}) >>> type(b) <class 'collections.Counter'> >>> list=b.most_common(5) #取前5的結果,它不管第6個或后面的值是否與第5個值相等,只返回前5 >>> list [(1, 3), (2, 2), (4, 2), (5, 2), (6, 2)]most_common()函數返回的結果是元組列表,不是字典
most_common()函數的缺點:在于它只返回前n個結果,他不管第n+1個或后面的值是否與第n個值相等,只單純的返回前n個值。
解決方法:
#返回統計單詞數出現最多的前n個單詞列表,如果第n+1與第n個相等可以一起并列的返回 def get_count(dct, n):data = dct.most_common()if(len(data)<=n):return list(data)else:val = data[n-1][1] return list(takewhile(lambda x: x[1] >= val, data)) #返回序列,當predicat?
總結
以上是生活随笔為你收集整理的counter()函数和most_common()函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程的组织
- 下一篇: totorisgit与git两种方式pu