• Python collections模块


    官网: https://docs.python.org/3/library/collections.html#module-collections

    ChainMap() 

    获取多个字典的key,去掉重复

    1 from collections import ChainMap
    2 
    3 baseline = {'A': 'a', 'B': 'b'}
    4 adjust = {'A': '1', 'C': '2'}
    5 print(list(ChainMap(adjust, baseline)))  # ['A', 'B', 'C']

    Counter()

    统计元素出现的次数

     1 from collections import Counter
     2 
     3 cnt = Counter()
     4 for word in ['red', 'blue', 'red', 'green', 'blue', 'blue', 'pink', 'black', 'red', 'yellow']:
     5     cnt[word] += 1
     6 print(cnt)    # 统计出现次数  Counter({'red': 3, 'blue': 3, 'green': 1, 'pink': 1, 'black': 1, 'yellow': 1})
     7 
     8 print(cnt.most_common(2))     # 出现次数多的前n位  [('red', 3), ('blue', 3)]
     9 
    10 print(sorted(cnt.elements()))   # 还原 ['black', 'blue', 'blue', 'blue', 'green', 'pink', 'red', 'red', 'red', 'yellow']
    11 
    12 c = Counter(a=3, b=2, c=1, d=0)
    13 print(sorted(c.elements()))    # ['a', 'a', 'a', 'b', 'b', 'c']

    deque()

    部分方法示例。创建队列,数据在队列里的进出

     1 from collections import deque
     2 
     3 dq = deque('abcd')
     4 print(dq)             # 一个队列 deque(['a', 'b', 'c', 'd'])
     5 dq.append('x')
     6 print(dq)            # 右端入队 deque(['a', 'b', 'c', 'd', 'x'])
     7 dq.appendleft('y')
     8 print(dq)            # 左端入队  deque(['y', 'a', 'b', 'c', 'd', 'x'])
     9 dq.pop()
    10 print(dq)            # deque(['y', 'a', 'b', 'c', 'd'])
    11 dq.popleft()
    12 print(dq)            # deque(['a', 'b', 'c', 'd'])
    13 dq.rotate(1)
    14 print(dq)            # deque(['d', 'a', 'b', 'c'])
    15 dq.rotate(-1)
    16 print(dq)            # deque(['a', 'b', 'c', 'd'])
    17 dq.clear()
    18 print(dq)            # deque([])

    defaultdict()

    对列表元素的各种统计

     1 from collections import defaultdict
     2 
     3 s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
     4 d = defaultdict(list)
     5 for k, v in s:
     6     d[k].append(v)
     7 print(sorted(d.items()))     #  [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
     8 
     9 s = 'mississippi'
    10 d = defaultdict(int)
    11 for k in s:
    12     d[k] += 1
    13 print(sorted(d.items()))     #  [('i', 4), ('m', 1), ('p', 2), ('s', 4)]
    14 
    15 s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 1), ('red', 1), ('blue', 4)]
    16 d = defaultdict(set)
    17 for k, v in s:
    18     d[k].add(v)
    19 print(sorted(d.items()))    #  [('blue', {1, 2, 4}), ('red', {1, 3})]

    nametuple()

    OrderedDict()

    创建有序字典,按插入顺序

    1 from collections import OrderedDict
    2 
    3 d = OrderedDict.fromkeys('abcde')
    4 print(d)              # OrderedDict([('a', None), ('b', None), ('c', None), ('d', None), ('e', None)])
    5 d.move_to_end('b')
    6 print(''.join(d))     # acdeb
    7 print(d)              # OrderedDict([('a', None), ('c', None), ('d', None), ('e', None), ('b', None)])
    8 d.move_to_end('b', last=False)
    9 print(''.join(d))     # bacde
  • 相关阅读:
    POI2014 洛谷P3574 FarmCraft 题解
    JZOJ 3468 OSU!题解
    sublime配置C++编译环境
    本地配置gitee
    数论基础
    HDU
    HDU-3033 I love sneakers! 题解
    HDU-4341 Gold miner 题解
    HDU
    MyBatis框架及原理分析
  • 原文地址:https://www.cnblogs.com/sue2015/p/15994166.html
Copyright © 2020-2023  润新知