python collection Chainmap Counter
chainmap是一个方便的工具类。它是使用链的方式将多个dict链在一起, 并不是真正的生成一个新的dict,从而允许程序可以这获取任意一个dict 所包含的所有key对应的value。 但是由于式链在一起的, 所以多个dict之间是有优先级区分的。而dict自带的update方式是将两个dict合并成一个。
from collections import ChainMap
#chainmap是允许有多个相同的key 存在, 但是会优先找第一个。
dict1 = {'name':"shun", "age": 10}
dict2 = {"name":"shun2", "age":11}
dict3 = {"color":"read", "school":"shu"}
newChainMap1 = ChainMap(dict1,dict2,dict3)
print(newChainMap1['name'],newChainMap1['school'])#shun,shu
#dict2 排在dict1的前面, 所有找key“name”对应的value的时候, 会优先找到dict2的shun2
newChainMap2 = ChainMap(dict2,dict1,dict3)
print(newChainMap2['name'],newChainMap2['school']) #shun2,shu
from collections import Counter
#Counter可以自动统计容器中各个元素出现的次数
#Counter的本质就是一个dict,他的key是元素,value是这个元素出现的次数
# Counter 对应继承了dictd类, 因此Counter方法包含所有的dict 方法 #通过可迭代对象string 创建counter 对象
counter1 = Counter("shunhh")
#通过可迭代对象dict创建counter对象
counter2 = Counter({"name":4,"age":10,"school":'shu'})#字典对象创建的counter对象,内容还是字典本身
#通过可迭代对象list 创建counter 对象
counter3 = Counter(['shun','shun','hhah','shhik']) print(counter1)
print(counter2)
print(counter3) """
Counter({'h': 3, 's': 1, 'u': 1, 'n': 1})
Counter({'name': 4, 'age': 10, 'school': 'shu'})
Counter({'shun': 2, 'hhah': 1, 'shhik': 1})
"""
from collections import Counter
#Counter可以自动统计容器中各个元素出现的次数
#Counter的本质就是一个dict,他的key是元素,value是这个元素出现的次数
# Counter 对应继承了dictd类, 因此Counter方法包含所有的dict 方法 #通过可迭代对象string 创建counter 对象
counter1 = Counter("shunhh")
#通过可迭代对象dict创建counter对象
counter2 = Counter({"name":4,"age":10,"school":'shu'})#字典对象创建的counter对象,内容还是字典本身
#通过可迭代对象list 创建counter 对象
counter3 = Counter(['shun','shun','shun','hhah','shhik',123,123,123,123,'a','a','b','b2']) #most_common(n)返回counter中出现次数最多的n个元素 #返回counter中出现次数最多的2个元素
print(counter3.most_common(2))#[(123, 4), ('shun', 3)] #返回counter中出现次数最多的3个元素
print(counter3.most_common(3))#[(123, 4), ('shun', 3), ('a', 2)]
from collections import Counter
#Counter可以自动统计容器中各个元素出现的次数
#Counter的本质就是一个dict,他的key是元素,value是这个元素出现的次数
# Counter 对应继承了dictd类, 因此Counter方法包含所有的dict 方法 #通过可迭代对象string 创建counter 对象
counter1 = Counter("shunhh")
#通过可迭代对象dict创建counter对象
counter2 = Counter({"name":4,"age":10,"school":'shu'})#字典对象创建的counter对象,内容还是字典本身
#通过可迭代对象list 创建counter 对象
counter3 = Counter(['shun','shun','shun','hhah','shhik',123,123,123,123,'a','a','b','b2']) # elements()返回counter 里面所有元素组成的迭代器
print(counter3)#Counter({123: 4, 'shun': 3, 'a': 2, 'hhah': 1, 'shhik': 1, 'b': 1, 'b2': 1})
print(list(counter3.elements())) # ['shun', 'shun', 'shun', 'hhah', 'shhik', 123, 123, 123, 123, 'a', 'a', 'b', 'b2']
from collections import Counter #subtract()计算减法, 计算减去之后各元素出现的次数
cnt1 = Counter(a=4,b=5,c=6)
cnt2 = Counter(a=3,b=4)
cnt1.subtract(cnt2)
print(cnt1) #Counter({'c': 6, 'a': 1, 'b': 1}) cnt1 = Counter(a=4,b=5,c=6)
cnt1.subtract(["a","a"])
print(cnt1) #Counter({'c': 6, 'b': 5, 'a': 2}) cnt1 = Counter(a=4,b=5,c=6)
cnt1.subtract(["a","a","d"])
print(cnt1) #Counter({'c': 6, 'b': 5, 'a': 2, 'd': -1})
from collections import Counter #对两个counter对象计算加法
cnt1 = Counter(a=4,b=5,c=6)
cnt2 = Counter(a=3,b=4)
cnt = cnt1 + cnt2
print(cnt)
from collections import Counter #counter对象与dict , list , set之间进行转换
cnt1 = Counter(python=4,java=5)
cnt2 = Counter(python=3,java=6) #counter转换成dict
dict1 = dict(cnt1)
print(dict1) #{'python': 4, 'java': 5} #counter转换成list
list1 = list(cnt1)
print(list1) #['python', 'java'] 这种方式只包含了key
print(list(cnt1.elements())) #['python', 'python', 'python', 'python', 'java', 'java', 'java', 'java', 'java'] 这种方式可以获取全部的元素 #counter转换成set
set1 = set(cnt1)
print(set1) #{'java', 'python'} #counter转换成tuple
tuple1 = tuple(cnt1)
print(tuple1) #('python', 'java')
from collections import Counter #对counter进行运算
cnt1 = Counter(python=4,java=5)
cnt2 = Counter(python=3,java=6, perl=5) print("cnt1 + cnt2")
print(cnt1 + cnt2) #Counter({'java': 11, 'python': 7, 'perl': 5})
print("cnt1 - cnt2")
print(cnt1 - cnt2) # Counter({'python': 1})
print("cnt2 - cnt1")
print(cnt2 - cnt1) # Counter({'perl': 5, 'java': 1})
print("cnt1 & cnt2")
print(cnt1 & cnt2) # Counter({'java': 5, 'python': 3}) #交集
print("cnt1 | cnt2")
print(cnt1 | cnt2) # Counter({'java': 6, 'perl': 5, 'python': 4}) 并集
print("+cnt1")
cnt1 = Counter(python=3,java=-6, perl=-2)
print(+cnt1) # Counter({'python': 3}) 求正, 只保留counter对象中出现次数为0或正数的key-value对
print("-cnt2")
cnt2 = Counter(python=3,java=6, perl=-2)
print(-cnt2) # Counter({'perl': 2}) 求负, 只保留counter对象中出现次数为负数的key-value对, 并将出现次数改为正数
python collection Chainmap Counter的更多相关文章
- Python collection模块与深浅拷贝
collection模块是对Python的通用内置容器:字典.列表.元组和集合的扩展,它包含一些专业的容器数据类型: Counter(计数器):dict子类,用于计算可哈希性对象的个数. Ordere ...
- python collection 和 heapq 模块使用说明
一 :集合库collection python 拥有一些内置的数据类型,collections模块提供啦几个额外的数据类型: 1,namedtuple 生成可以使用名字来访问元素内容的tuple子 ...
- Python:collections.Counter
collections是Python内建的一个集合模块,其中提供了许多有用的集合类: namedtuple:只有属性的简易类 deque:双向增删的List ChainMap:多个字典的链接 Coun ...
- python collection系列
collection系列 不常用功能,需要进行模块功能导入: import collection Counter 常用方法测试: #!/usr/local/env python3 ''' Author ...
- python collections中Counter类
Counter是dict的一个子类,因此具有dict的属性与方法.如常用的iteritems, items, get, pop. class Counter(dict): 如果Key不存在,将返回0, ...
- python collection模块
一.模块的认识 定义:模块就是我们把装有特定功能的代码进行归类的结果. 说明:从代码编写的单位来看我们的城西,从小到大:一条代码 -> 语句块 - >代码块(函数.类)-> 模块. ...
- python 计数器类Counter的用法
简单操作: import collections A=['a','b','b','c','d','b','a'] count=collections.Counter(A) print(count) C ...
- python collection 中的队列
认识中的队列 在以前的认知里,队列是先进先出,就是一头进,一头出,Queue.而无意间看到了deque 双向队列. 即从该队列的头或者尾部都能插入和移除元素.而起时间复杂度竟然是一样的!O(1),是不 ...
- python开发_re和counter
python中re和counter的结合,可以实现以下的功能: 1.获取字符串或者文件中的单词组 2.对单词组进行统计 下面是我做的demo 运行效果: ======================= ...
- Simple Tips for Collection in Python
I believe that the following Python code is really not hard to understand. But I think we should use ...
随机推荐
- python基础之hashilb模块、logging模块
hashlib加密模块 1.何为加密 将文明数据处理成密文数据 让人无法看懂 2.为什么要加密 保证数据的安全,防止密码泄露 3.如何判断数据是否加密 密文数据的表现形式一般都是一串没有规则的字符串( ...
- 痞子衡嵌入式:低功耗&高性能边缘人工智能应用的新答案 - MCXN947
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦MCX系列MCU的新品MCXN947. 自 2015 年恩智浦和飞思卡尔合并成新恩智浦之后,关于它们各自的 Arm Cortex- ...
- python运算符与基本数据类型
Python种类 JavaPython cPython ***** pypy 字节码 和 机器码 Python程序: 1. 终端: C:\python35\python.exe D:\1.py 解释器 ...
- Ventoy制作启动盘和使用VMware测试启动盘(论文版)
- 1 Ventoy 1.1 Ventoy是什么 Ventoy是可用于制作启动U盘的开源工具,在占用少量引导分区容量后,其他空间依旧可以正常当一般的U盘读写文件.它的最大特点是只要将iso.win. ...
- 数据库服务器CPU不能全部利用原因分析
背景 客户凌晨把HIS数据库迁移到配置更高的新服务器,上午业务高峰时应用非常缓慢. 现象 通过SQL专家云实时可视化界面看到大量的绿点,绿点表示会话在等待某项资源,绿点越大说明等待的会话数越多. 进入 ...
- ubunut安装qtcreater
安装gcc 1 kxb@kxb:~$ gcc -v 2 3 Command 'gcc' not found, but can be installed with: 4 5 sudo apt insta ...
- 【Surface Detection】Segmentation-Based Deep-Learning Approach for Surface-Defect Detection
物体表面缺陷检测现状 传统机器学习局限性 传统机器学习方法对于特定的算法只能解决特定的问题,不够灵活,无法快速适应新产品: 不同的问题有不同的特征,当需要解决新问题时,需要重新设计特征,开发周期长: ...
- 微信小程序转发onShareAppMessage设置path参数后在onload获取不到值的原因和解决方法
官方实例:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html#onShareAppMessage-Obje ...
- P8796 [蓝桥杯 2022 国 AC] 替换字符
题面 给定一个仅含小写英文字母的字符串 \(s\) 和 \(m\) 次操作,每次操作选择一个区间 \([l_i,r_i]\) 将 \(s\) 的该区间中的所有字母 \(x_i\) 全部替换成字母 \( ...
- Hugging Face - 推理(Inference)解决方案
每天,开发人员和组织都在使用 Hugging Face 平台上托管的模型,将想法变成概念验证(proof-of-concept)的 demo,再将 demo 变成生产级的应用. Transformer ...