我正在尝试计算字母出现并打印出来。这就是我到目前为止所做的:
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'))
出于某种原因,我在该行上遇到错误。我该如何正确打印?
编辑:我的Martijn解决方案!道具!但有没有人知道如何按字母顺序对字典进行排序?答案 0 :(得分:6)
d
是词典,而不是列表。循环键:
for key in d:
print('{} | {}'.format(key, d[key]))
或者您将获得KeyError
例外。
您可能对collections.Counter()
class感兴趣;这是一个计数词典:
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
答案 1 :(得分:0)
为了好玩,让我们简化您的代码。您可以在初始字符串上使用set()来获取唯一字符的列表,然后只使用列表的count方法。
def histogram(L):
d = {letter:L.count(letter) for letter in set(L)}
for key in d:
print "{} | {}".format(key, d[key]}