python -- Counter 类

python -- Counter 类


我明白你会来,所以我等


参考

官方文档


class collections.Counter([iterable-or-mapping])

Counter 集成于 dict 类,因此也可以使用字典的方法,此类返回一个以元素为 key 、元素个数为 value 的 Counter 对象集合

>>> from collections import Counter
>>> s = "hello pinsily"
>>> d = Counter(s)
>>> d
Counter({‘l‘: 3, ‘i‘: 2, ‘h‘: 1, ‘e‘: 1, ‘o‘: 1, ‘ ‘: 1, ‘p‘: 1, ‘n‘: 1, ‘s‘: 1, ‘y‘: 1})

elements()

返回一个迭代器

>>> d.elements()
<itertools.chain object at 0x0000019AC812BBA8>

# 可以进行打印和排序
>>> for i in d.elements():
...     	print(i)
...

most_common(n)

返回数量最多的前 n 个元素

>>> d.most_common(3)
[(‘l‘, 3), (‘i‘, 2), (‘h‘, 1)]

subtract([iterable-or-mapping])

相当于减法,调用这个方法的 Counter 会被覆盖掉

>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> d = Counter(a=1, b=2, c=3, d=4)
>>> c.subtract(d)
>>> c
Counter({‘a‘: 3, ‘b‘: 0, ‘c‘: -3, ‘d‘: -6})
>>> d
Counter({‘d‘: 4, ‘c‘: 3, ‘b‘: 2, ‘a‘: 1})

总结

当需要对 list 中的大量数据进行计数时,可以直接使用 Counter ,而不用新建字典来计数


时间: 2024-11-08 23:33:39

python -- Counter 类的相关文章

python之Counter类:计算序列中出现次数最多的元素

Counter类:计算序列中出现次数最多的元素 1 from collections import Counter 2 3 c = Counter('abcdefaddffccef') 4 print('完整的Counter对象:', c) 5 6 a_times = c['a'] 7 print('元素a出现的次数:', a_times) 8 9 c_most = c.most_common(3) 10 print('出现次数最多的三个元素:', c_most) 11 12 times_dic

[Python]剖析类的机理

Python是如何创建类的? 当python的解释器碰到类的定义的时候,它会像对待其他code一样先读取其内容,然后为这个class创建一个新的namespace并且执行其代码.类的定义通常包括变量,方法以及其他类.这些内容都在新的命名空间里面.从类的内容读到到类的对象的产生是通过内置type函数来实现,所以type函数也提供可动态创建类的可能. 用type函数动态创建类的时候,type这个构造函数需要三个参数,分别是类名,基类以及其属性. type实际上是一个元类,所谓的元类就是可以创建其他类

python Class(类) and Object Oriented(面向)

Python类与面向对象    程序=指令+数据 (或算法+数据结构).代码可以选择以指令为核心或以数据为核心进行编写.    两种范型        (1)以指令为核心:围绕"正在发生什么"进行编写(面向过程编程:程序具有一系列线性步骤:主体思想是代码作用于数据)以指令为中心,程序员的主要工作在于设计算法.        (2)以数据为核心:围绕"将影响谁"进行编写(面向对象编程<oop>:围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访

Python 的类的下划线命名有什么不同?

1,以一个下划线开头的命名 ,如_getFile2,以两个下划线开头的命名 ,如__filename3,以两个下划线开头和结尾的命名,如 __init__()4,其它这些命名有什么不同吗 首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入.不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var

Python新式类和经典类的区别

@Python新式类和经典类的区别 class ClassicClass(): pass class NewStyleClass(object): pass x1 = ClassicClass() x2 = NewStyleClass() print x1.__class__, type(x1) print x2.__class__, type(x2) 输出结果: __main__.ClassicClass <type 'instance'> <class '__main__.NewSt

谨慎修改Python的类属性

Python的类和类实例都是可变对象,可以随时给属性赋值,并且在原处修改. 在对类属性进行修改时需要特别小心,因为所有的类实例都继承共享类属性,除非实例本身存在和类属性同名的属性.对类属性进行修改,会影响到所有由这个类生成的实例. class CA(object): cls_pre = 'aaaaa' def __init__(self): self.obj_pre = 'bbbbb' a = CA() b = CA() print(a.cls_pre, a.obj_pre) print(b.c

python元类分析

刚开始接触到Python新式类中的元类的概念的时候很是纠结了下..不知道这是个啥东西... 用以下几个定义来说明吧: (1)Python中,类也是对象..只不过这种对象比较的特殊,他用于创建别的对象 (2)元类也是一种类,只不过它更特殊...他是用来创建别的类的类...(呵呵,是不是很拗口) 先来看一段代码吧: class Fjs(object): def __init__(self, name): self.name = name def hello(self): print "hello b

python 定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object): ... def __init__(self, name):

Python的类与类型

1.经典类与新式类 在了解Python的类与类型前,需要对Python的经典类(classic classes)与新式类(new-style classes)有个简单的概念. 在Python 2.x及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性:反之,即不由任意内置类型派生出的类,则称之为“经典类”. “新式类”和“经典类”的区分在Python 3.x之后就已经不存在,在Python 3.x之后的版本,因为所有的类都