欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

collections 模块

程序员文章站 2024-01-13 18:19:28
...

collections是Python内建的一个集合模块,提供了许多有用的集合类

一个点的二维坐标就可以表示成 namedtuple 这个包可以来完成这个操作

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)   # 1
print(p.y)   # 2

Circle = namedtuple('circle', ["x", "y", "r"])
c = Circle(1, 2, 3)
print(c)    # circle(x=1, y=2, r=3)
print(c.x)  # 1

deque deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈

from collections import deque
ls = [1, 2, 3]
ls2 = deque(ls)`在这里插入代码片`
ls2.append(10)
ls2.appendleft(20)   # 支持 appendleft()  高效的向头部添加
print(ls2)           # deque([20, 1, 2, 3, 10])
print(list(ls2))
ls2.pop()
ls2.popleft()        # 支持 popleft()     高效的删除头部元素
print(ls2)           # deque([1, 2, 3])
print(list(ls2))

defaultdict 当key不存在时,给字典定义一个默认值

使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict

from collections import defaultdict
dd = defaultdict(lambda: ‘N/A’)
dd[‘key1’] = ‘abc’
value = dd[‘key1’] # key1存在
print(value) # ‘abc’

value2 = dd[‘key2’] # key2不存在,返回默认值
print(value2) # ‘N/A’

OrderedDict 创建一个有序字典

使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序

from collections import OrderedDict
dict1 = dict([('a', 1), ('b', 2), ('c', 3)])
print(dict1)   # dict的Key是无序的

dict2 = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(dict2)        # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(dict(dict2))  # {'a': 1, 'b': 2, 'c': 3}

od = OrderedDict()
od['z'] = 1
od['y'] = 2
od['x'] = 3
print(od)   # 按照插入的Key的顺序返回

Counter是一个简单的计数器,例如,统计字符出现的个数

from collections import Counter
c = Counter()

for i in 'programming':
    c[i] = c[i]+1

print(c)           # Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
print(type(c))     # <class 'collections.Counter'>
dict_c = dict(c)
print(dict_c)      # {'p': 1, 'r': 2, 'o': 1, 'g': 2, 'a': 1, 'm': 2, 'i': 1, 'n': 1}

参考链接地址: https://www.cnblogs.com/lwp-king666/p/8331508.html
这个玩意其实平时用的不多,就是作为一个了解,当你用到的时候可能就觉得有用了,这里面作为一个扩展,没啥难度,傻瓜式的记住就行了!

相关标签: collections

上一篇: Git常用命令汇总

下一篇: