[翻译]Python Module of The Week: Counter

Counter是一个来跟踪加入多少个相同值的容器。

初始化:
Counter支持三种形式的初始化。它的构造器可以被一组元素来调用,一个包含键值和计数的字典,或者使用关键字参数字符串名称到计数的映射。

import collections

print collections.Counter([‘a‘, ‘b‘, ‘c‘, ‘a‘, ‘b‘, ‘b‘])
print collections.Counter({‘a‘:2, ‘b‘:3, ‘c‘:1})
print collections.Counter(a=2, b=3, c=1)

  这三种形式的初始化的结果都是相同的。

$ python collections_counter_init.py

Counter({‘b‘: 3, ‘a‘: 2, ‘c‘: 1})
Counter({‘b‘: 3, ‘a‘: 2, ‘c‘: 1})
Counter({‘b‘: 3, ‘a‘: 2, ‘c‘: 1})

  一个空的Counter可以通过无参构造,并且使用update()方法赋值

import collections

c = collections.Counter()
print ‘Initial :‘, c

c.update(‘abcdaab‘)
print ‘Sequence:‘, c

c.update({‘a‘:1, ‘d‘:5})
print ‘Dict    :‘, c

  计数的值跟随新的数据而增加,而不是被取代。在这个例子里,a的计数从3变为4。

$ python collections_counter_update.py

Initial : Counter()
Sequence: Counter({‘a‘: 3, ‘b‘: 2, ‘c‘: 1, ‘d‘: 1})
Dict    : Counter({‘d‘: 6, ‘a‘: 4, ‘b‘: 2, ‘c‘: 1})

  

访问Counts
一旦一个Counter被赋值了,它的值可以使用字典API去获得

import collections

c = collections.Counter(‘abcdaab‘)

for letter in ‘abcde‘:
    print ‘%s : %d‘ % (letter, c[letter])

  Counter不会对不知道的的数据项报KeyError. 如果一个值没有在输入中出现,它的计数为0

$ python collections_counter_get_values.py

a : 3
b : 2
c : 1
d : 1
e : 0

  elements()方法返回一个产生所有对于Counter是已知数据项的迭代器

import collections

c = collections.Counter(‘extremely‘)
c[‘z‘] = 0
print c
print list(c.elements())

  元素的顺序是没有保证的,而且所有元素的计数如果小于0是没有包含在内的。

$ python collections_counter_elements.py

Counter({‘e‘: 3, ‘m‘: 1, ‘l‘: 1, ‘r‘: 1, ‘t‘: 1, ‘y‘: 1, ‘x‘: 1, ‘z‘: 0})
[‘e‘, ‘e‘, ‘e‘, ‘m‘, ‘l‘, ‘r‘, ‘t‘, ‘y‘, ‘x‘]

  使用most_common()方法来产生一个第n长出现的输入值的序列以及对应的计数。

import collections

c = collections.Counter()
with open(‘/usr/share/dict/words‘, ‘rt‘) as f:
    for line in f:
        c.update(line.rstrip().lower())

print ‘Most common:‘
for letter, count in c.most_common(3):
    print ‘%s: %7d‘ % (letter, count)

  这个例子计数系统字典里所有出现的字符,然后产生一个频率分布,然后打印出最长出现的三个字符。给most_common()不赋参数,会产生一个所有数据项的序列,依据频率排序。

$ python collections_counter_most_common.py

Most common:
e:  235331
i:  201032
a:  199554

  

[翻译]Python Module of The Week: Counter,布布扣,bubuko.com

时间: 2024-07-30 13:44:08

[翻译]Python Module of The Week: Counter的相关文章

python module, package

任何Python程序都可以作为模块导入:在导入自己的模块时,需要添加路径: import sys sys.path.append('absolute-path'); (__pycache__是执行main.py时创建的) hello.py内容: def sayHello(): print('hello,world') main.py内容 import sys sys.path.append("/home/icode0410/Documents/code/python/module/modules

Nuke Python module的使用

最近很多脚本工作都需要脱离nuke的gui环境运行,没有了script editor就必须要尝试Nuke Python module功能了.该模式可以执行大部分在GUI环境中的命令,在自动生成或者批量处理nuke工程时非常高效. 下面简单介绍该模式: 从8.0版本开始Nuke就可以被当作一个python模块来使用了. 这意味着你现在可以在VFX流程中使用Python来做很多复杂的事,对于大部分的2DPython模块,3DPython模块以及视频编辑Python模块,这是一个易用的,产品级的,不可

【python】UnboundLocalError: local variable 'counter' referenced before assignment

http://passport.baidu.com/?business&un=%E4%BA%91%E9%BE%99%E5%8E%BF%5F%E5%B0%8F%E5%A7%90%5F%E6%89%BE#0 http://passport.baidu.com/?business&un=%E6%89%BE%5F%E6%B4%B1%E6%BA%90%E5%8E%BF%5F%E7%BE%8E%E5%A5%B3#0 http://passport.baidu.com/?business&un=

在IDL中调用自定义Python Module

在IDL中调用自定义PythonModule 要在IDL8.3中调用自定义的Python Module以实现在IDL中不方便完成的任务.如使用一些开发包,但是这个开发包并不支持IDL,毕竟使用IDL的人数还是相对较少的.因此,混合编程是一个解决之道.下面介绍在IDL(32位,下面的介绍都只是针对32位的IDL8.3)中调用自定义的PythonModule的操作步骤. 1)  下载Slither(The IDL toPython Bridge).下载地址http://research.jacque

Python module中的全局变量

Python module中的全局变量 我想要实现一个python module,这个module中有一些配置项,这些配置项可以被读取,被修改.一个可行的方案是把这些配置项写到一个叫settings.py的文件中. 现在我有一个叫zz的module,它的文件结构是这样的: __init__.py __all__=['sleep', 'wake', 'settings'] from sleep import fall_asleep from wake import wake_up settings

翻译: Python 2.7.x和Python 3.x之间的主要区别(包括示例)

许多Python初学者都想知道应该从哪个版本的Python开始.我对这个问题的回答通常是“仅需使用您喜欢的教程所写的版本,并在以后查看差异”. 但是,如果您开始一个新项目并可以选择,该怎么办?我要说的是,只要Python 2.7.x和Python 3.x都支持您计划使用的库,那么目前就没有“对”或“错”.但是,这两个最受欢迎的Python版本之间的主要区别值得一看,以此避免在为其中任何一个编写代码或计划移植项目时遇见陷阱. __future__模块 Python 3.x引入了一些Python 2

python module的结构

python有很多module,下面是module的结构图: 拿httplib做例子,httlip module有: 4个class( HTTPConnection,HTTPSConnection,HTTPResponse,HTTPMessage ), 12个exception( HTTPException,NotConnected,InvalidURL,UnknownProtocol,UnknownTransferEncoding,UnimplementedFileMode,Incomplet

Python中Collections模块的Counter容器类使用教程

1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排序字典,是字典的子类.引入自2.7.namedtuple()函数:命名元组,是一个工厂函数.引入自2.6.Counter类:为hashable对象计数,是字典的子类.引入自2.7.deque:双向队列.引入自2.4.defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键.引入自2.

Python Module和Package辨析

Python 基础学习 说明 这不是最基础的新手教程,如需了解Python的数据类型.变量等基础内容,请移步:https://docs.python.org/2/tutorial/index.html 这里的代码使用Python2.7环境,没有在>3版本号环境下測试,如有不兼容等问题,欢迎交流.邮箱:[email protected] 模块(Moudule)和包(Package)辨析 module 通常模块为一个文件,直接使用import来导入就好了.能够作为module的文件类型有".p