1>>> # regular unsorted dictionary
2>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
3
4>>> # dictionary sorted by key
5>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
6OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
7
8>>> # dictionary sorted by value
9>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
10OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
11
12>>> # dictionary sorted by length of the key string
13>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
14OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
15
1>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
2>>> d = defaultdict(list)
3>>> for k, v in s:
4... d[k].append(v)
5...
6>>> d.items()
7[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
8
1>>> # Tally occurrences of words in a list
2>>> cnt = Counter()
3>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
4... cnt[word] += 1
5>>> cnt
6Counter({'blue': 3, 'red': 2, 'green': 1})
7
8>>> # Find the ten most common words in Hamlet
9>>> import re
10>>> words = re.findall(r'\w+', open('hamlet.txt').read().lower())
11>>> Counter(words).most_common(10)
12[('the', 1143), ('and', 966), ('to', 762), ('of', 669), ('i', 631),
13 ('you', 554), ('a', 546), ('my', 514), ('hamlet', 471), ('in', 451)]
14
1most_common([n])¶
2Return a list of the n most common elements and their counts from the most common to the least. If n is omitted or None, most_common() returns all elements in the counter.
3Elements with equal counts are ordered arbitrarily:
4
5>>> Counter('abracadabra').most_common(3)
6[('a', 5), ('r', 2), ('b', 2)]
7
1>>> from collections import defaultdict
2>>> food_list = 'spam spam spam spam spam spam eggs spam'.split()
3>>> food_count = defaultdict(int) # default value of int is 0
4>>> for food in food_list:
5... food_count[food] += 1 # increment element's value by 1
6...
7defaultdict(<type 'int'>, {'eggs': 1, 'spam': 7})
8>>>