One way to do this is to make a normal dict from your counter, using lowercase letters as the keys of the new dict. We use the dict.get method to supply a default value of zero for missing letters.
import string from collections import Counter letter = "rxgmgcwbd c qcyurr bkxgmq, lwrg grru rrwxtam rwgzwt am quyam cv avrrgdwkxgcr.iwxbdamcz xdalguj qarc ram av vcmfwgmgum. yw'g" letter_count = Counter(letter.translate(str.maketrans('','',string.punctuation))) letter_count = {k: letter_count.get(k, 0) for k in string.ascii_lowercase} print("Frequency count of letter:\n", letter_count)
Exit
Frequency count of letter: {'a': 9, 'b': 3, 'c': 8, 'd': 4, 'e': 0, 'f': 1, 'g': 12, 'h': 0, 'i': 1, 'j': 1, 'k': 2, 'l': 2, 'm': 10, 'n': 0, 'o': 0, 'p': 0, 'q': 4, 'r': 14, 's': 0, 't': 2, 'u': 5, 'v': 4, 'w': 9, 'x': 6, 'y': 3, 'z': 2}
If you do this in Python 3.6+, you get a side benefit that the new dict sorts alphabetically (although this behavior is currently only a part of an implementation that should not be relied on).
As user letter_count.get(k, 0) mentions in the comments, we do not need to use letter_count.get(k, 0) , since the counter automatically returns zero if we try to read the value of a nonexistent key. Thus, the understanding of dict can be changed to
letter_count = {k: letter_count[k] for k in string.ascii_lowercase}