python计数器(Counter)

liftword5个月前 (01-13)技术文章47

python计数器(Counter)

Counter是collections模块的Counter类。collections中一共有9种容器,其中counter、defaultdict、deque、namedtuple、orderdict比较常用。

计数器(Counter)是一个无序容器,用于记录各种值出现的次数。

它采用键值对的形式存储,要记录的值作为key,这个值出现的次数作为value,value值可正可负。

创建计数器

# 创建一个空实例
c = collections.Counter()
# 从list创建
c = collections.Counter(['a', 'a', 'b', 'b', 'c'])
# 从tuple创建
c = collections.Counter(('a', 'a', 'b', 'b', 'c'))
# 从dict创建
c = collections.Counter({'a': 2, 'b': 2, 'c': 1})
# 从字符串创建
c = collections.Counter("hello world")
# 从键值参数创建
c = collections.Counter(a=2, b=2, c=1)

访问元素

计数器是dict的子类,因此可以像使用dict那样访问计数器元素:

print(c['h'])
print(c['w'])

当访问计数器中不存在的元素的时候,返回0

print(c['x'])

增加计数

从计数器中加上可迭代对象(www)中各种值出现的次数

c.update("www")

减少计数

从计数器中减去可迭代对象(www)中各种值出现的次数

c.subtract("www")

删除元素

计数器中一个元素的值减少到0时,不会自动从计数器中删除,如果要删除可以使用del函数。

del (c['-'])

topN操作

获取出现次数最多的n个元素,返回包含这些元素的list

出现次数最多的元素

top1 = c.most_common(1)

出现次数最多的两个元素

top2 = c.most_common(2)

不提供参数则返回所有元素

topx = c.most_common()

数学集合操作

c = collections.Counter((1, 2, 3, 4, 5))
d = collections.Counter((4, 5, 6, 7, 8))
print('c', dict(c))
print('d', dict(d))
print('c + d', c + d)
print('c - d', c - d)
print('c & d', c & d)
print('c | d', c | d)

输出

c {1: 1, 2: 1, 3: 1, 4: 1, 5: 1}
d {4: 1, 5: 1, 6: 1, 7: 1, 8: 1}
c + d Counter({4: 2, 5: 2, 1: 1, 2: 1, 3: 1, 6: 1, 7: 1, 8: 1})
c - d Counter({1: 1, 2: 1, 3: 1})
c & d Counter({4: 1, 5: 1})
c | d Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1})

参考:
https://blog.csdn.net/JohnJim0/article/details/116985770
https://blog.csdn.net/yelitoudu/article/details/116115012

相关文章

什么是Python 之 ? 22 dict字典键值对

Python Dictionaries 字典,其实也叫键值对俗话说 男女搭配干活不累,九台怎么男女形成配对呢?key是不能重复的{ "key1": value1, "key2&...

字典操作(键值对) - 看这些就够了

1、初始化:大括号、dict、fromkeys初始化2、访问:单个访问、多个访问 单个访问-->[]、get; 多个访问-->items、keys、values;访问3、编辑:增加、修改、...

合并 Python 中的字典3个方法的区别与联系

1、在 Python 中使用 | 操作符合并字典首先,让我们讨论合并字典的最简单方法,这通常已经足够满足你的需求。以下是两个字典:>>> context = {"langua...

Python - 爬虫之Selenium

一、Selenium 的介绍Selenium 是一个 Web 自动化测试工具,最初是为网站自动化测试而开发,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括 PhantomJS 这些...

Python 基础之基本语法与数据类型,小白必看!

在编程的世界里,Python 以其简洁、高效和强大的功能,成为了众多开发者的首选语言。无论你是想转行进入科技领域,还是对编程充满好奇的爱好者,掌握 Python 的基本语法和数据类型都是开启编程之旅的...

1 python的for循环格式及嵌套

python的for循环是一个序列迭代器,可以遍历任何可迭代对象,比如字符串、列表、元组等。1.1 python的for循环格式python的for循环,会逐个将可迭代对象中的元素,赋值给for循环的...