collections模块内置数据结构扩展
1.namedtuple()
factory function for creating tuple subclasses with named fields
-
namedtuple让tuple属性可读
import collections # 定义一个点 Point = collections.namedtuple("Point", "x, y") p = Point(1, 2) p.x # 1 p.y # 2 p[0] # 1 p[1] # 2
2.deque
list_like container with fast appends and pops on either end
-
deque可以方便地实现queue、stack
# 创建一个双向队列 de = collections.deque() # 左右两端添加 de.append(1) de.appendleft(2) # 左右两端pop出 de.pop() de.popleft()
3.Counter
dict subclass for counting hashable objects
-
一个计数器工具提供快速和方便的计数
c = collections.Counter("abcdab") # Counter({"a": 2, "b": 2, "c": 1, "d": 1}) c["a"] # 2 c.most_common() # [('a', 2), ('b', 2), ('c', 1), ('d', 1)]
4.OrderedDict
dict subclass that remembers the order entries were added
-
有序词典就像常规词典一样,但有一些与排序操作相关的额外功能。
od = collections.OrderdDict() od['c'] = 'c' od['a'] = 'a' od['b'] = 'b'
5.defaultdict
-
dict subclass that calls a factory function to supply missing values
dd = collections.defaultdict(int) dd['a'] dd['b'] += 1 dd # defaultdict(int, {'a': 0, 'b': 1})
6.redis LRUCache实现原理
- 利用python内置的dict + collections.OrderdDict实现
- dict 用来当做k/v键值对的缓存
- OrderedDict 用来实现更新最近访问的key