I am trying to count letter occurances and print them. This is what i have so far:
def histogram(L):
d = {}
for x in L:
for letter in x:
if letter in d:
d[letter] += 1
else:
d[letter] = 1
for i in range(len(d)):
print('{} | {}'.format(d, d[i])) # GETTING ERRORS ON THIS LINE
return d
histogram(open('cipher.txt'))
For some reason i am getting errors on that line. How would i print it correctly?
EDIT:solution my Martijn! Props! but does anyone know how to sort the dictionary by alphabetical order?
解决方案
d is a dictionary, not a list. Loop over the keys:
for key in d:
print('{} | {}'.format(key, d[key]))
or you'll get KeyError exceptions.
You may be interested in the collections.Counter() class; it's a counting dictionary:
from collections import Counter
def histogram(L):
d = Counter(letter for line in L for letter in x)
for letter in d:
print('{} | {}'.format(letter, d[letter]))
return d