这个函数的意义在于创建一个容易让人理解的元组数据结构(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\'
name
(这个例子举的比较挫),请看以下代码,能更好理解.In [14]: name = namedtuple(\'wahaha\',[\'first\',\'second\'])
In [15]: name.__name__
Out[15]: \'wahaha\'
In [18]: n = name(\"Mr\",\"ZONT\")
In [19]: isinstance(n,name)
Out[19]: True
In [20]: isinstance(n,tuple)
Out[20]: True
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\'])
和传统的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
比传统的dict
的优越性在于,其key
是有顺序的。
In [49]: o = OrderedDict([(\'100\',0),(\'10\',5),(\'X\',\'Z\')])
In [51]: o.keys()
Out[51]: [\'100\', \'10\', \'X\']
OrderedDict
的排序是根据输入的key的顺序进行排序。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
上一篇:前序遍历树