Python学习:常见的内建模块(1)

[0] deque双向链表,适合于大量的插入与删除.就是python帮助我们实现了这个数据结构..当然[i]也是可以用的,但是很慢.

q = deque(['a','b','c'])
>>> q.appendleft('first')
>>> q.append('last')
>>> q
deque(['first', 'a', 'b', 'c', 'last'])
>>> 

[1]:defaultdict,当key不存在时返回i我们设定的默认值的dict。

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'

[2]:OrderedDict,按照关键字插入的顺序进行存储.我们可以通过这个内置的类来构造一个先进先出的dict!,当超过容量时,删掉最前面的元素:

from collections import OrderedDict
class FIFO_Dict(OrderedDict):
    def __init__(self,capcity):
        super().__init__()
        self._capcity = int(capcity) 
    def __setitem__(self,key,value):
        if key in self:del self[key]
        elif len(self) == self._capcity : self.popitem(last = False)
        super().__setitem__(key,value)

t = FIFO_Dict(5)
t['a'] = 1
t['b']  = 2
t['c'] = 1
t['d']  = 2
t['e'] = 1
t['f']  = 2
t['g'] = 3
t['e'] = 99
print(list(t))

[3]base64模块用来将二进制数据转化成可显示的数据,下面这个代码用来解决有些解码过程会省略’=’(在url里面有特殊意义)的解码.

import base64
def safe_base64_decode(str):
    mod = 4 - len(str)%4
    str += b'='*mod
    return base64.b64decode(str)

你可能感兴趣的:(Python学习:常见的内建模块(1))