集合模块:CollectionS.Counter
计数器是一个DICT子类,允许我们轻松计算对象。
它具有实用的方法,用于使用我们正在计算的对象的频率。
import collections counts = collections.Counter([1,2,3])
上面的代码创建了一个对象counts,它具有传递给构造函数的所有元素的频率。这个例子有值计数器({1:1,2:1,3:1})
构造函数例子
字符计数
collections.Counter('Happy Birthday') Counter({'a': 2, 'p': 2, 'y': 2, 'i': 1, 'r': 1, 'B': 1, ' ': 1, 'H': 1, 'd': 1, 'h': 1, 't': 1})
单词计数
collections.Counter('I am Sam Sam I am That Sam-I-am That Sam-I-am! I do not like that Sam-I-am'.split()) Counter({'I': 3, 'Sam': 2, 'Sam-I-am': 2, 'That': 2, 'am': 2, 'do': 1, 'Sam-I-am!': 1, 'that': 1, 'not': 1, 'like': 1})
Recipe
c = collections.Counter({'a': 4, 'b': 2, 'c': -2, 'd': 0})
获取单个元素的计数
c['a'] 4
设置单个元素的数量
c['c'] = -3 c Counter({'a': 4, 'b': 2, 'd': 0, 'c': -3})
Get total number of elements in counter (4 + 2 + 0 - 3)
sum(c.itervalues()) # negative numbers are counted! 3
获取元素(只保留具有正计数器的元素)
list(c.elements()) ['a', 'a', 'a', 'a', 'b', 'b']
删除0或者负值的键
c collections.Counter() Counter({'a': 4, 'b': 2})
删除所有
c.clear() c Counter()
添加删除单个元素
c.update({'a': 3, 'b':3}) c.update({'a': 2, 'c':2}) # adds to existing, sets if they don't exist c Counter({'a': 5, 'b': 3, 'c': 2}) c.subtract({'a': 3, 'b': 3, 'c': 3}) # subtracts (negative values are allowed) c Counter({'a': 2, 'b': 0, 'c': -1})
内置集合包提供了几种专用,灵活的集合类型,这些类型都是高性能,并为一般收集类型的Dict,List,元组和集合提供替代品。
Collections模块还定义了描述不同类型的收集功能(如MutableSet和ItemsView)的抽象基类。
日期:2020-06-02 22:16:03 来源:oir作者:oir