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.
See also
- Python Typing Koans
- Model Field - Django ORM Working - Part 2
- Structure - Django ORM Working - Part 1
- jut - render jupyter notebook in the terminal
- Five reasons to use Py.test
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.