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
这个玩意其实平时用的不多,就是作为一个了解,当你用到的时候可能就觉得有用了,这里面作为一个扩展,没啥难度,傻瓜式的记住就行了!
上一篇: Git常用命令汇总