【编程课堂】计数器 Counter

上一期的编程课堂我们介绍了 有序字典 OrderedDict,这一期我们再来聊聊 同属 collections 模块的另一种数据类型 Counter

在了解 Counter 之前,请大家思考一个问题,现在有包含多个词汇的列表:

list1 = ['red','green','red','blue','green','red']

该如何去统计列表中各词汇出现的次数?

如果再深入一些,如何统计一本小说中,作者所用词汇出现的次数?

Python 里提供了一个优雅简洁的解决方案:Counter

关于 Counter ,在官方文档中可以找到如下描述:

A Counter is a dict subclass for counting hashable objects. It is an unordered collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts.

Counterdict 的子类,是用于计数。它是一个无序的集合,其中元素存储为字典键,其计数存储为字典值。计数允许为包括零或负计数的任何整数值。

在 Python Shell 里演示一下。初始化一个 Counter 对象的几种方法:

初始化可迭代对象

>>> from collections import Counter
>>> Counter('adffdsads') Counter({'d': 3, 'f': 2, 's': 2, 'a': 2})

初始化映射对象

>>> Counter({'red':1,'green':2}) Counter({'green': 2, 'red': 1})

初始化关键字参数对象

>>> Counter(cats=4,dogs=8) Counter({'dogs': 8, 'cats': 4})

Counterdict 的子类,所以你可以放心地像 dict 一样来使用它。具体可参考 【Python 第37课】 字典

下面看个 Counter 的常用方法:

most_common(n)

返回一个列表,包含 n 个最常见的元素已经他们的计数,如果 n 为空,则返回所有元素。

>>> c = Counter('adffdsads')
>>> c.most_common(3) [('d', 3), ('a', 2), ('f', 2)]

通过此方法,你就可以很方便地找出频率最高的元素,省去了计数和排序的麻烦。

关于 Counter  就介绍到这里。好记性不如烂笔头,赶紧拿每期 每周一坑 里的题目来练练手吧。


(0)

相关推荐

  • 用这10个小技巧加速Python编程

    重磅干货,第一时间送达 >>> # Positive Indexing... numbers = [1, 2, 3, 4, 5, 6, 7, 8]... print("Fi ...

  • 原来 collections 这么好用!!

    (给Python开发者加星标,提升Python技能) 来源: 南枝向暖北枝寒MA https://blog.csdn.net/mall_lucy/article/details/108822795 [ ...

  • 像这样操作 Python 列表,能让你的代码更优雅

    写 Python 代码,列表的出镜率是相当高的,伴随列表一起出现的往往就是一大堆 for 循环,这样的代码多了看起来非常不简洁.作为一名 Python 程序员,怎么能忍受呢? 那有没有什么好办法呢?除 ...

  • 第30天:Python collections 模块

    第30天:Python collections 模块

  • Python编程

    Python编程 IDE:集成开发工具 python,java,c,c++,c#,javascript,php,R,ruby, Python(目前有两个大版本Python2-Python3)的集成开发 ...

  • 【编程课堂】装饰器浅析

    Python 拥有丰富强大的功能和表达特性,其中之一便是装饰器,装饰器能够在不改变函数.方法.类本身的情况下丰富他们的功能. 比如,我们有一个函数 func ,我们希望在不改变函数的前提下记录函数运行 ...

  • 【编程课堂】以 jQuery 之名 - 爬虫利器 PyQuery

    很多读者在学习了 Python 之后都想做一些爬虫程序,去网上采集数据或完成一些自动化操作.因此,我们也制作了一套爬虫实战课程,目前正在最后的完善中,很快将和各位见面. 等不及的朋友,可以先来看看这个 ...

  • 【编程课堂】同一台电脑,不同的 Python

    virtulenv 是一个创建独立 python 运行环境的工具. 在标准的 python 环境中,所有的库都是唯一存在的,不会有两个或以上版本的相同库. 但在日常的开发工作中常常会遇到此类问题,比如 ...

  • 【编程课堂】selenium 祖传爬虫利器

    一些网页,比如微博,只有在登录状态才能进行页面的访问,或者对数据有比较复杂的验证和保护,直接通过网络请求进行登录并获取数据就会比较麻烦.这种时候,就该本篇的主角 selenium 上场了. Selen ...

  • 【编程课堂】jieba-中文分词利器

    0.前言 在之前的文章[编程课堂]词云 wordcloud 中,我们曾使用过 jieba 库,当时并没有深入讲解,所以本次将其单独列出来详细讲解. jieba库是进行中文分词的利器,根据文档描述,具有 ...

  • 【编程课堂】 windows计划任务

    在学习了一些爬虫或者 web 开发等知识之后,常常我们会有这样的需求: 写了个爬取豆瓣电影的脚本,需要每天定时自动运行: 使用 django 开发了一个小小的博客网站,希望开启电脑之后就自动在 CMD ...

  • 【编程课堂】海龟作图

    0.前言 turtle  是 python 内置的一个比较有趣味的模块,俗称 海龟作图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo ...

  • 【编程课堂】震惊!小 bug 引发大灾难,0.1 + 0.2 的结果竟然是……

    各位观众点进标题看文章的时候,我已经准备打包行李去UC报道啦~ 冷笑话结束,嗯,说正事.请大家思考一下在 python 控制台输入  0.1 + 0.2 == 0.3 ,返回的结果是什么?手边有电脑的 ...

  • 【编程课堂】有序字典 OrderedDict

    编程课堂将和每周一坑一样,成为本教室公众号的一个长期固定栏目.每期讲解一个编程知识点,包括但不限于 Python 语法.模块介绍.编程小技巧等.用简短的篇幅,让你多了解一点编程. 上周每周一坑的题目 ...