1

0.前置说明

1.namedtuple

这个函数的意义在于创建一个容易让人理解的元组数据结构(tuple),

In [1]: from collections import namedtuple

In [2]: name = namedtuple('name',['first','second'])

In [3]: n = name("Mr","ZONT")

In [4]: n.first
Out[4]: 'Mr'

In [5]: n.second
Out[5]: 'ZONT'

使用技巧以及注意事项

  • 注意namedtuple的第一个参数真的是表示这个结构的name(这个例子举的比较挫),请看以下代码,能更好理解.
In [14]: name = namedtuple('wahaha',['first','second'])
In [15]: name.__name__
Out[15]: 'wahaha'
  • 新建的tuple是原来tuple的子类
In [18]: n = name("Mr","ZONT")
In [19]: isinstance(n,name)
Out[19]: True
In [20]: isinstance(n,tuple)
Out[20]: True

deque

dequelist的进化版,可以在两头添加和删除元素,适合用于队列和栈。

In [21]: from collections import deque
In [22]: d = deque(['r', 'Z', 'O'])
In [24]: d.append('N')
In [25]: d.appendleft('M') #在最左侧添加元素
In [26]: d
Out[26]: deque(['M', 'r', 'Z', 'O', 'N'])
In [27]: d.append('T')
In [28]: d
Out[28]: deque(['M', 'r', 'Z', 'O', 'N', 'T'])
In [29]: d.pop()
Out[29]: 'T'
In [30]: d
Out[30]: deque(['M', 'r', 'Z', 'O', 'N'])
In [31]: d.popleft() #弹出左侧的元素
Out[31]: 'M'
In [32]: d
Out[32]: deque(['r', 'Z', 'O', 'N'])

defaultdict

和传统的dict相比,当所选择的key不存在时,可以返回一个默认值。

In [33]: from collections import defaultdict
In [35]: d = defaultdict(lambda:'NOKEY')
In [36]: d['k'] = 1
In [37]: d['k']
Out[37]: 1
In [38]: d['d']
Out[38]: 'NOKEY'

使用技巧以及注意事项

  • 注意defaultdict里面的参数必须是以函数形式传入的,除了用上文的匿名函数还可以用普通函数,如:
In [39]: def test():
   ....:     return "hello"
   ....:
In [41]: d = defaultdict(test)
In [43]: d['l']
Out[43]: 'hello'

OrderedDict

OrderedDict比传统的dict的优越性在于,其key是有顺序的。

In [49]: o = OrderedDict([('100',0),('10',5),('X','Z')])
In [51]: o.keys()
Out[51]: ['100', '10', 'X']

使用技巧以及注意事项

  • 注意OrderedDict的排序是根据输入的key的顺序进行排序。

Counter

Counter是一个简单的计数器,可用于统计字符出现个数等。

In [52]: from collections import Counter
In [54]: c = Counter('sdugvikbvqerhasasdasds')
In [55]: c['a']
Out[55]: 3
In [56]: c['d']
Out[56]: 3
In [57]: c['s']
Out[57]: 5

MrZONT
741 声望92 粉丝