我爱编程

Python进阶话题杂谈(十一)collections模块最实用

2018-06-21  本文已影响0人  樱雨楼

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月于苏州

上一篇下一篇

猜你喜欢

热点阅读