collections是Python的一个包含了计数器、队列、命名元组、有序字典等高级数据结构的模块。本文只讨论此模块最常用的Counter接口。
Counter用于对一个可迭代对象中的所有元素进行出现次数计数。如果不使用此接口,这样的功能可以通过哈希表实现:
numList = [1, 1, 1, 2, 2, 3]
counterDict = {}
for i in numList:
if i in counterDict:
counterDict[i] += 1
else:
counterDict[i] = 1
Counter的返回值是一个继承自dict的数据结构,故针对字典的操作也适用于Counter。Counter接受一个可迭代对象,返回一个Counter对象。此对象最主要的方法是most_common,此方法可以接受一个可选的数字N作为参数,按从大到小的顺序返回前N个出现次数最多的元素及其出现次数,而如果不给出参数,则按从大到小的顺序返回所有元素及其出现次数。most_common的返回值类似于zip,为一个由多个双元素元组构成的list,可直接用于并行迭代。下例即为使用Counter对list元素进行计数的例子:
import collections
numList = [1, 1, 1, 2, 2, 3]
for i, j incollections.Counter(numList).most_common():
print(i, j)
2018年6月于苏州