python 实用函数——collections模块之Counter()

collections模块之Counter()

Counter: 便捷快速计数(支持所有存储结构),将元素计数,并返回一个字典,key为元素,value为该元素的数量,与count不同,count() 只会记录输入元素的数量

演示:

# 具体演示·以串为例(没办法,串最好打,直接引号里面输字符)
from collections import Counter
test_str="cabbba"
res_dic=Counter(test_str)
# 结果按数量降序存储,就是先存多的元素
print(res_dic)
# 按被处理串中元素顺序
print(dict(res_dic))
# 由于Counter 结果是字典,故字典的操作都可进行
print(res_dic.items())  # dict.items() 取字典的key与value
print(res_dic.keys)
print(res_dic.values())
# 按数量降序排列
print(sorted(res_dic.items(),key=lambda x:-x[-1]))
# 按元素查数量,按数量查元素 通过遍历方法
for k,v in res_dic.items():if v==2:print(k)# if k=="元素":#     print(i)

结果:

结果按数量降序存储,就是先存多的元素
Counter({'b': 3, 'a': 2, 'c': 1})
按被处理串中元素顺序
{'c': 1, 'a': 2, 'b': 3}
由于Counter 结果是字典,故字典的操作都可进行
dict_items([('c', 1), ('a', 2), ('b', 3)])
<built-in method keys of Counter object at 0x00000281F2BBE7F0>
dict_values([1, 2, 3])
按数量降序排列
[('b', 3), ('a', 2), ('c', 1)]
按元素查数量,按数量查元素 通过遍历方法
a

Counter.most_common()

返回一个列表,包含counter中n个最大数目的元素(就是按数量降序输出n个元素),
如果忽略n或者为None,most_common()将会返回counter中的所有元素,
元素有着相同数目的将会选择出现早的元素

演示:

test_str1="aaassffhhghhhhwewwwjggh"
print("返回2个数量最多的元素")
print(Counter(test_str1).most_common(2))
# 存在相同数目元素时,且在most_common范围内
print("存在相同数目元素时,且在most_common范围内")
test_str2="aabbcccccddd"
print(Counter(test_str2).most_common(3))
# 调换 ab位置
test_str3="bbaacccccddd"
print("调换相同数量元素位置")
print(Counter(test_str3).most_common(3))

结果:

返回2个数量最多的元素
[('h', 7), ('w', 4)]
存在相同数目元素时,且在most_common范围内
[('c', 5), ('d', 3), ('a', 2)]
调换相同数量元素位置
[('c', 5), ('d', 3), ('b', 2)]

update()

将俩个可迭代对象(可迭代对象是一个元素序列,而非(key,value)对构成的序列)
中所有元素相加,是数目相加而非替换它们

dic1 = {'a': 3, 'b': 4, 'c': 0, 'd': -2, "e": 0}
dic2 = {'a': 3, 'b': 4, 'c': 0, 'd': 2, "e": -1, "f": 6}
a = Counter(dic1)
print(a)
# 结果:Counter({'b': 4, 'a': 3, 'c': 0, 'e': 0, 'd': -2})
b = Counter(dic2)
print(b)
# 结果:Counter({'f': 6, 'b': 4, 'a': 3, 'd': 2, 'c': 0, 'e': -1})
a.update(b)
print(a)
# 结果:Counter({'b': 8, 'a': 6, 'f': 6, 'c': 0, 'd': 0, 'e': -1})

subtract()

俩个可迭代对象元素相减,是数目相减而不是替换它们

dic1 = {'a': 3, 'b': 4, 'c': 0, 'd': -2, "e": 0}
dic2 = {'a': 3, 'b': 4, 'c': 0, 'd': 2, "e": -1, "f": 6}
a = Counter(dic1)
print(a)
# 结果:Counter({'b': 4, 'a': 3, 'c': 0, 'e': 0, 'd': -2})
b = Counter(dic2)
print(b)
# 结果:Counter({'f': 6, 'b': 4, 'a': 3, 'd': 2, 'c': 0, 'e': -1})
a.subtract(b)
print(a)
# 结果:Counter({'e': 1, 'a': 0, 'b': 0, 'c': 0, 'd': -4, 'f': -6})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UI自动化测试工具工作原理是怎样的?

随着软件开发的不断演进&#xff0c;保障软件质量成为了至关重要的一环。在这个过程中&#xff0c;UI自动化测试工具崭露头角&#xff0c;为开发团队提供了一种强有力的方式来确保应用程序的稳定性、功能性和兼容性。本文将深入探讨UI自动化测试工具的定义、工作原理以及其在提…

mybatis数据输入-零散的简单类型数据

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom",200.33); INSERT INTO…

版本控制系统Git学习笔记-Git基本知识介绍

目录 前言一、版本控制系统1.1 什么是版本控制系统1.2 本地版本控制系统1.3 集中化的版本控制系统1.3 分布式版本控制系统 二、Git简介2.1 数据处理方式2.2 几个特点2.2.1 几乎所有操作都是本地执行2.2.2 Git保证完整性2.2.3 Git一般只添加数据 2.3 Git中文件状态2.3.1 三种文件…

拼图游戏制作

2.创建用户界面 package domain; /** * ClassName: User * Author: Kox * Data: 2023/2/2 * Sketch: */ public class User { private String username; private String password; public User() { } public User(String username, String p…

防火墙之iptables

iptables概述 1.Linux 系统的防火墙 &#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 2.主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 -netfilter/iptables关系&#xff1a; netfil…

JS获取字符串里最长的回文字符串

方法一 使用双指针配合枚举 /*** param {string} s* return {string}*/ const longestPalindrome s > {const LEN s.lengthif (LEN < 2) {return s}let maxStr /*** param left * param right * returns */const findPalindrome (left, right) > {while (left &…

day32_Git

今日内容 零、 复习昨日 零、 复习昨日 一、引言 在单人开发过程中&#xff0c;需要进行版本管理&#xff0c;以利于开发进度的控制。 在多人开发过程中&#xff0c;不仅需要版本管理&#xff0c;还需要进行多人协同控制。 版本控制(VS) SVN GIT 二、介绍 Git是一个开源的…

rabbitmq-server-3.11.10.exe

rabbitmq需要erlang环境 otp_win64_25.1.exe erlang-CSDN博客 https://www.rabbitmq.com/download.htmlhttps://www.rabbitmq.com/install-windows.htmlhttps://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.10/rabbitmq-server-3.11.10.exe C:\Users\Admi…

Spine深入学习 —— 换装

Spine深入学习————换装 数据对象和实例对象的关系与区别 数据对象是无状态的&#xff0c;可在任意数量的骨架实例间共用。有对应实例数据的数据对象类名称以“Data”结尾&#xff0c;没有对应实例数据的数据对象则没有后缀&#xff0c;如附件、皮肤及动画。 实例对象有许…

python-GC机制、装饰器、生成器、迭代器、三元表达式、列表生成式、生成器表达式、函数递归、面向对象、

1 基础知识 1.1 GC机制 Python的垃圾回收&#xff0c;其实高级的语言都有自己的垃圾回收机制简称GC&#xff0c; python当中主要通过三种方式解决垃圾回收的方式&#xff0c;引用计数、标记清除、分代回收。引用计数&#xff1a;如果有新的引用指向对象&#xff0c;对象引用计…

产品运营常用的ChatGPT通用提示词模板

产品定位和规划&#xff1a;请帮助我明确产品的定位和规划&#xff0c;包括目标市场、用户需求、竞争对手等方面的内容&#xff0c;以便我能够更好地制定产品运营策略。 产品设计和开发&#xff1a;请帮助我进行产品设计和开发&#xff0c;包括功能设计、界面设计、用户体验等…

Nodejs 第二十章(fs 下)

概述 在 Node.js 中&#xff0c;fs 模块是文件系统模块&#xff08;File System module&#xff09;的缩写&#xff0c;它提供了与文件系统进行交互的各种功能。通过 fs 模块&#xff0c;你可以执行诸如读取文件、写入文件、更改文件权限、创建目录等操作&#xff0c;Node.js …

壹财基金杨振骏:资本如何做好Web3布局?

Web3行业是革命性的时代风口&#xff0c;目前全球各个发达国家都在争先抢占Web3的主导地位。2023年&#xff0c;香港特区政府大力支持Web3行业的政策落地&#xff0c;缔造了良好的发展环境&#xff0c;鼓励有意布局Web3行业的机构和创业者积极参与。 然而&#xff0c;Web3行业…

ply前端

ply 是 eBPF 的 front-end 前端工具之一&#xff0c;专为 embedded Linux systems 开发&#xff0c;采用 C 语言编写&#xff0c;只需 libc 和内核支持 BPF 就可以运行&#xff0c;不需要外部 kernel 模块&#xff0c;不需要 LLVM&#xff0c;不需要 python。 ply 由瑞典工程师…

【数据结构】——排序

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

bugku题解记录2

文章目录 哥哥的秘密黄道十二官where is flag一段新闻 哥哥的秘密 给出了一个qq&#xff0c;那就去看看呗 hint里面说 收集空间信息——相册——收集微博信息——相册——解题——相册——提交flag 那看看空间先 盲文&#xff1a; hint&#xff1a;密码时地人 旗帜存在相册里…

【精选】ATKCK红队评估实战靶场一 超详细过程思路

一、环境搭建 1.红日靶场下载&#xff1a; 靶场下载地址&#xff1a; https://pan.baidu.com/s/1nC6V8e_EuKfaLb2IuEbe7w&shflsharepset 提取码&#xff1a;n1u22.内外网IP搭建 Windows 7 x64Windows Server 2008Win2K3 Metasploitablekali内网IP&#xff1a;192.168.52…

ROS学习笔记(一)- 创建工作空间和功能包

1.工作空间 工作空间(workspace)是一个存放工程开发相关文件的文件夹 • src &#xff1a;代码空间&#xff08;Source Space&#xff09; • build &#xff1a;编译空间&#xff08;Build Space&#xff09; • devel &#xff1a;开发空间&#xff08;Development Spa…

【LeetCode:1657. 确定两个字符串是否接近 | 计数 + 阅读理解】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Ubuntu使用Nginx部署前端项目——记录

安装nginx 依次执行以下两条命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nginx通过查看版本号查看是否安装成功&#xff1a; nginx -v补充卸载操作&#xff1a; sudo apt-get remove nginx nginx-common sudo apt-get purge nginx nginx-common su…