当前位置: 首页 > 后端技术 > Python

师兄教你熟练使用python的collections.Counter类型

时间:2023-03-26 14:06:39 Python

collections.Counter类型可用于对可哈希对象进行计数,或用作多集合-多集合是元素可以多次出现的集合。collections.Counter类型类似于其他编程语言中的bags或multisets2。(1)基本用法counter=collections.Counter(['biology','imprint','archaeologist','biology','jujube','imprint'])logging.info('counter->%s',counter)counter.update(['fossil','fruit','jujube','biology'])most=counter.most_common(2)logging.info('most->%s',most)操作结果:INFO-counter->Counter({'bio':2,'imprint':2,'archaeologist':1,'date':1})INFO-counter->Counter({'bio':3,'Imprint':2,'Jujube':2,'Archaeologist':1,'Fossil':1,'Fruit':1})INFO-most->[('biological',3),('imprint',2)]**推荐:020持续更新,精品圈每天都有新内容,干货高度集中。建立联系,讨论技术,你想要的都在这里!成为第一个加入团队并超越同行的人!(入群不收费)点此与Python开发高手交流学习。群号:745895701免费申请:Python软件安装包,免费提供Python实用教程资料,包括Python基础学习、进阶学习、爬虫、人工智能、自动化运维、自动化测试等。**示例程序中,首先使用集合.Counter()初始化计数器对象。此时计数器对象中已经计算出当前单词出现的次数;collections.Counter()被插入到一个可迭代对象中,比如这里的列表。然后使用update()方法传入生词表。此时计数器对象会更新计数器并进行累加计算;最后,使用计数器对象的most_common()方法打印出前2个单词列表。(2)集合操作collections.Counter类型也支持集合操作。a=collections.Counter({'tiger':3,'goat':1})b=collections.Counter({'tiger':1,'goat':3})logging.info('a->%s',a)logging.info('b->%s',b)logging.info('a+b->%s',a+b)logging.info('a-b->%s',a-b)logging.info('a&b->%s',a&b)logging.info('a|b->%s',a|b)INFO-a->Counter({'Tiger':3,'rabbit':2,'goat':1})INFO-b->Counter({'goat':3,'tiger':1})INFO-a+b->Counter({'tiger':4,'goat':4,'rabbit':2})INFO-a-b->Counter({'tiger':2,'rabbit':2})INFO-a&b->Counter({'tiger':1,'goat'':1})INFO-a|b->Counter({'Tiger':3,'Goat':3,'Rabbit':2})·例子中的a和b都是Counter类型的对象。它还演示了可以使用键值对初始化Counter对象;a+b表示并集运算,包括所有元素;a-b表示差分运算;a&b表示交集运算;a|b比较特殊,首先包含所有的key,然后比较两个对象中对应key的最大值作为新对象的值。比如对象a中有'tiger':3,对象b中有'tiger':1,那么最后的对象就是'tiger':3。(3)正负值计数Counter类型中的Counter也支持负值。c=collections.Counter(x=1,y=-1)logging.info('+c->%s',+c)logging.info('-c->%s',-c)INFO-+c->Counter({'x':1})INFO--c->Counter({'y':1})通过简单地使用+/-作为Counter类型对象的前缀,正负计数过滤可以取得成就。Python的这种设计很优雅。