27 2 / 2014
Counting elements with dictionary
Let’s say you want to find how many times each element is present in the list or tuple.
Normal approach
words = ['a', 'the', 'an', 'a', 'an', 'the'] d = {} for word in words: if word in d: d[word] += 1 else: d[word] = 1 print d {'a': 2, 'the': 2, 'an': 2}
Better approach
words = ['a', 'the', 'an', 'a', 'an', 'the'] d = {} for word in words: d[word] = d.get(word, 0) + 1 print d {'a': 2, 'the': 2, 'an': 2
Both the approach returned same values. The first one has 6 lines of logic and second has 3 lines of logic (less code less management).
Second approach uses
d.get method.
d.get(word, 0) return count of the word if key is present else
0. If
0 isn’t passed
get will return
None.
Pythonic approach:
import collections words = ['a', 'b', 'a'] res = collections.Counter(words) print res Counter({'a': 2, 'b': 1})
Last approach is just one line and pythonic.
Snippet is extracted from Transforming Code into Beautiful, Idiomatic Python. Do watch and enjoy.