上一期的编程课堂我们介绍了 有序字典 OrderedDict,这一期我们再来聊聊 同属 collections 模块的另一种数据类型 Counter。 在了解 Counter 之前,请大家思考一个问题,现在有包含多个词汇的列表: list1 = ['red','green','red','blue','green','red'] 该如何去统计列表中各词汇出现的次数? 如果再深入一些,如何统计一本小说中,作者所用词汇出现的次数? Python 里提供了一个优雅简洁的解决方案:Counter 关于 Counter ,在官方文档中可以找到如下描述:
Counter 是 dict 的子类,是用于计数。它是一个无序的集合,其中元素存储为字典键,其计数存储为字典值。计数允许为包括零或负计数的任何整数值。 在 Python Shell 里演示一下。初始化一个 Counter 对象的几种方法: 初始化可迭代对象 >>> from collections import Counter 初始化映射对象 >>> Counter({'red':1,'green':2})
Counter({'green': 2, 'red': 1}) 初始化关键字参数对象 >>> Counter(cats=4,dogs=8)
Counter({'dogs': 8, 'cats': 4}) Counter 是 dict 的子类,所以你可以放心地像 dict 一样来使用它。具体可参考 【Python 第37课】 字典。 下面看个 Counter 的常用方法: most_common(n)返回一个列表,包含 n 个最常见的元素已经他们的计数,如果 n 为空,则返回所有元素。 >>> c = Counter('adffdsads') 通过此方法,你就可以很方便地找出频率最高的元素,省去了计数和排序的麻烦。 关于 Counter 就介绍到这里。好记性不如烂笔头,赶紧拿每期 每周一坑 里的题目来练练手吧。 |
|