个人主页: Aileen_0v0
热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
个人格言:“没有罗马,那就自己创造罗马~”

文章目录

  • 标准库collections
    • Counter:计数器
    • Dequeue:双端队列
    • defaultdict:有默认值的字典
    • OrderedDict:有序字典

标准库collections

collections这个标准库中包含了很多的容器,这个库里面的工具是基于我们学过的容器如字典,元组扩展的。

Counter:计数器

Counter本身就是一个字典

无计数器的技术方法:

a = ["apple","banana","apple","cat","cat","cat","dog"]b = {}for x in a:b[x] = b.get(x,0) + 1print(b)

运行结果:

用计数器的技术方法:

from collections importCountera = ["apple","banana","apple","cat","cat","cat","dog"]b =Counter(a)print("type(b) = ",type(b))print("b = ",b)

运行结果:

常见用法:

from collections importCountera = Counter() #空Counterprint(a)a = Counter("Hello World")#统计每个字符print(a)a = Counter([1,2,3,1,2])#统计每个元素出现次数print(a)

运行结果:

数学运算:

from collections importCounterc = Counter(a=3,b=1)d = Counter(a=2,b=2)print("c+d =",c+d)print("c-d =",c-d)print("c&d =",c&d) #与运算,取c和d的交集print("c|d =",c|d) #并集

运行结果:

Dequeue:双端队列

大部分操作和list类似,但是删除和插入操作比list更高效
方法功能
append(x)添加x 到右端
appendleft(x)添加x到左端
pop()移去并且返回一个元素,deque 最右侧的那一个。
popleft()移去并且返回一个元素,deque 最左侧的那一个。
insert(i, x)在位置i插入X。
extend(iterable)扩展deque的右侧,通过添加iterable参数中的元素
extendleft(iterable)扩展deque的左侧,通过添加iterable参数中的元素。 注意,左添加时,在结果中iterable参数中的顺序将被反过来添加。
remove(value)移除找到的第一个 value。
clear()清空
copy()拷贝
count(x)计算deque中元素等于x的个数
index(x[,start[,stop]])返回x在deque中的位置(在索引start之后,索引stop之前)
reverse()将deque逆序排列。
rotate(n=1)向右循环移动n步。如果n是负数,就向左循环。
maxlenDeque的最大尺寸,如果没有限定就是None。
from collections importdequea = deque([1,2,3,4,1,4,2,4])print("a = ",a)#将整个列表向右挪一位a.rotate(1)print("a = ",a) #a =deque([4, 1, 2, 3, 4, 1, 4, 2])#将整个列表向左挪两位a.rotate(-2) #a =deque([4, 1, 2, 3, 4, 1, 4, 2])

defaultdict:有默认值的字典

from collections import defaultdicts = [('yellow',1),('blue',2),('yellow',3),("blue",4),("red",1)]d = defaultdict(list)for k,v in s:d[k].append(v)print(d)

运行结果:

OrderedDict:有序字典

from collections import OrderedDictdata = [("a",1),("b",2),("c",3)]d = dict(data)print(d)while len(d) != 0:print("删除的元素为:",d.popitem())print("d = ",d)