collections模块内置数据结构扩展__lzy

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

你可能感兴趣的:(collections模块内置数据结构扩展__lzy)