概述
尽管我们创建字典,用for循环计数,也能计数,但有现成的为什么不用呢?
collections.Counter(注意C是大写)可以对一个序列中的元素进行计数。
需要注意的是,Counter本身是个字典,key:value 为 元素:数量,可以进行一切字典操作。
而且除此之外Counter还支持,形如a-b,a+b这样的数学操作,即减去相应元素的次数和累加相应元素的次数。
>>> words = [
... 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',
... 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',
... 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',
... 'my', 'eyes', "you're", 'under'
... ]
>>> from collections import Counter
>>> word_counts = Counter(words)
>>> # 出现频率最高的3个单词
... top_three = word_counts.most_common(3)
>>> top_three
[('eyes', 8), ('the', 5), ('look', 4)]
但是有个问题:如果有多个元素出现的次数都是最多(比如都是2次),我们怎么输出同时输出这些并列rank的元素呢,看个例子。
>>> from collections import Counter
>>> a = [1,2,2,3,3]
>>> c = Counter(a)
>>> c.most_common(1)
[(2, 2)] #这里只输出了一个元素,但是3同样出现了2次
>>> c.most_common(2)
[(2, 2), (3, 2)]
>>> t = [item for item in c.items() if item[1]==c.most_common(1)[0][1]]
>>> t
[(2, 2), (3, 2)]
可以使用列表生成器来过滤。
支持特殊的数学运算
>>> words = [
... 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',
... 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',
... 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',
... 'my', 'eyes', "you're", 'under'
... ]
>>> morewords = ['why','are','you','not','looking','in','my','eyes']
>>> a = Counter(words)
>>> b = Counter(morewords)
>>> a+b
Counter({'eyes': 9, 'the': 5, 'look': 4, 'my': 4, 'into': 3, 'not': 2, 'around': 2, "don't": 1, "you're": 1, 'under': 1, 'why': 1, 'are': 1, 'you': 1, 'looking': 1, 'in': 1})
>>> a-b
Counter({'eyes': 7, 'the': 5, 'look': 4, 'into': 3, 'my': 2, 'around': 2, "don't": 1, "you're": 1, 'under': 1})
最后
以上就是温暖发带为你收集整理的python出现的次数最多的元素_python:用collections.Counter来计数,找出次数最多的元素。...的全部内容,希望文章能够帮你解决python出现的次数最多的元素_python:用collections.Counter来计数,找出次数最多的元素。...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复