0.前置说明
- 1.运行环境:Win7虚拟机、python2.7(anacoda版)
- 2.本文大部分内容引用此参考文献并极力推荐根据此人博客学习python:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fa…
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
deque
是list
的进化版,可以在两头添加和删除元素,适合用于队列和栈。
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