首页 > 编程语言 >python collection Chainmap Counter

python collection Chainmap Counter

时间:2023-02-05 14:33:42浏览次数:37  
标签:counter python Counter collection cnt2 cnt1 print

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对, 并将出现次数改为正数

 

标签:counter,python,Counter,collection,cnt2,cnt1,print
From: https://www.cnblogs.com/shunguo/p/17093327.html

相关文章

  • 整理我遇到的 Python 的疑难问题
    1如果字典里一个键指向一个实例,深拷贝会拷贝出一个新的实例吗?不会:classfoo:def__init__(self):print('doinitfoo')a={'cls':foo()}a#......
  • python 3.python入门
    1.编程语言介绍1.1分类机器语言#机器语言用二进制代码0和1描述的指令称为机器指令,由于计算机内部是基于二进制指令工作的,所以机器语言是直接控制计算......
  • python Listbox插入数据导致GUI崩溃
    提问: 我用windnd模块做了个文件拖入获取路径的功能,想把获取到的路径插入到列表,但是GUI会崩溃,下面是原代码求帮忙看看咋回事importwindndimportthreadingimporttk......
  • python内置函数len()
    len()len()函数用于返回对象(字符串、字节、元组、列表等)的长度(元素个数)len()函数的语法:len(s)代码示例print(len(range(10)))print(len(["1","2","3"]))print(len......
  • python内置函数range()
    range()函数介绍range()函数实际上表示一个不可变的数字序列类型,通常用于在for循环中指定特定的次数。range()的格式:classrange(stop)classrange(start,stop[,ste......
  • Python黑客编程之类nc工具
    目的用pythonsocket编写一款类似NetCat的工具,可以在服务器上远程执行命令,从服务器上下载文件代码服务端和客户端用同一套代码,用-l参数进行区分importargparsei......
  • 20天零基础自学Python | Day5 8大数据类型
    大家好,我是宁一。这节课我们来讲讲python的8大数据类型,已经这些数据类型的区别。1、什么是数据类型上节课说过,后面我们不管是做网站,还是做数据分析,都要处理各种各样的数据,比......
  • 20天零基础自学Python | Day4 变量
    大家好,我是宁一。后面我们不管是做网站,还是做数据分析,都要处理各种各样的数据,比如姓名、生日、分数等。变量,就是我们给这些数据起的名字。1、定义变量比如我们用变量定义一......
  • 20天零基础自学Python | Day6 运算符大全
    大家好,我是宁一。运算符是编程语言中最基本的知识点,是必须要掌握的,不仅适用于Python,其他编程语言也都能用到。1、算术运算符(1)加减乘除跟我们上学时学的都是一样的,注意乘法和......
  • 20天零基础自学Python | Day7 Number(数字)
    大家好,我是宁一。Python数字数据类型是用来存储数值的。是我们从小学就开始接触的老朋友了,也是python中最基础的数据类型。1、Number数据类型python3的Number数据类型包......