collections 模块功能用例

来源:互联网 发布:ping的端口是多少 编辑:程序博客网 时间:2024/06/05 19:50

deque :

>>> from collections import deque>>> d = deque('ghi')                 # make a new deque with three items>>> for elem in d:                   # iterate over the deque's elements...     print elem.upper()GHI>>> d.append('j')                    # add a new entry to the right side>>> d.appendleft('f')                # add a new entry to the left side>>> d                                # show the representation of the dequedeque(['f', 'g', 'h', 'i', 'j'])>>> d.pop()                          # return and remove the rightmost item'j'>>> d.popleft()                      # return and remove the leftmost item'f'>>> list(d)                          # list the contents of the deque['g', 'h', 'i']>>> d[0]                             # peek at leftmost item'g'>>> d[-1]                            # peek at rightmost item'i'>>> list(reversed(d))                # list the contents of a deque in reverse['i', 'h', 'g']>>> 'h' in d                         # search the dequeTrue>>> d.extend('jkl')                  # add multiple elements at once>>> ddeque(['g', 'h', 'i', 'j', 'k', 'l'])>>> d.rotate(1)                      # right rotation>>> ddeque(['l', 'g', 'h', 'i', 'j', 'k'])>>> d.rotate(-1)                     # left rotation>>> ddeque(['g', 'h', 'i', 'j', 'k', 'l'])>>> deque(reversed(d))               # make a new deque in reverse orderdeque(['l', 'k', 'j', 'i', 'h', 'g'])>>> d.clear()                        # empty the deque>>> d.pop()                          # cannot pop from an empty dequeTraceback (most recent call last):  File "<pyshell#6>", line 1, in -toplevel-    d.pop()IndexError: pop from an empty deque>>> d.extendleft('abc')              # extendleft() reverses the input order>>> ddeque(['c', 'b', 'a'])

defaultdict :

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]>>> d = defaultdict(list)>>> for k, v in s:...     d[k].append(v)...>>> d.items()[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
>>> d = {}>>> for k, v in s:...     d.setdefault(k, []).append(v)...>>> d.items()[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
>>> s = 'mississippi'>>> d = defaultdict(int)>>> for k in s:...     d[k] += 1...>>> d.items()[('i', 4), ('p', 2), ('s', 4), ('m', 1)]
>>> s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]>>> d = defaultdict(set)>>> for k, v in s:...     d[k].add(v)...>>> d.items()[('blue', set([2, 4])), ('red', set([1, 3]))]

namedtuple:

from collections import namedtuple
websites = [
    ('Sohu', 'http://www.google.com/', u'张朝阳'),
    ('Sina', 'http://www.sina.com.cn/', u'王志东'),
    ('163', 'http://www.163.com/', u'丁磊')
]
Website = namedtuple('Website', ['name', 'url', 'founder'])
for website in websites:
    website = Website._make(website)
    print website
# Result:
Website(name='Sohu', url='http://www.google.com/', founder=u'\u5f20\u671d\u9633')
Website(name='Sina', url='http://www.sina.com.cn/', founder=u'\u738b\u5fd7\u4e1c')
Website(name='163', url='http://www.163.com/', founder=u'\u4e01\u78ca')


OrderedDict:

>>> # regular unsorted dictionary>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}>>> # dictionary sorted by key>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])>>> # dictionary sorted by value>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])>>> # dictionary sorted by length of the key string>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])

Counter

>>> # Tally occurrences of words in a list>>> cnt = Counter()>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:...     cnt[word] += 1>>> cntCounter({'blue': 3, 'red': 2, 'green': 1})
>>> c = Counter(['eggs', 'ham'])>>> c['bacon']                              # count of a missing element is zero0
>>> c['sausage'] = 0                        # counter entry with a zero count>>> del c['sausage']  
>>> c = Counter(a=4, b=2, c=0, d=-2)>>> list(c.elements())['a', 'a', 'a', 'a', 'b', 'b']
>>> Counter('abracadabra').most_common(3)[('a', 5), ('r', 2), ('b', 2)]
>>> c = Counter(a=4, b=2, c=0, d=-2)>>> d = Counter(a=1, b=2, c=3, d=4)>>> c.subtract(d)>>> cCounter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
>>> c = Counter(a=3, b=1)>>> d = Counter(a=1, b=2)>>> c + d                       # add two counters together:  c[x] + d[x]Counter({'a': 4, 'b': 3})>>> c - d                       # subtract (keeping only positive counts)Counter({'a': 2})>>> c & d                       # intersection:  min(c[x], d[x])Counter({'a': 1, 'b': 1})>>> c | d                       # union:  max(c[x], d[x])Counter({'a': 3, 'b': 2})



1 0
原创粉丝点击