Python 计数字母发生率
我试图数一数发生的信件并打印出来。这就是我到目前为止所做的:Python 计数字母发生率,python,dictionary,python-3.x,character,histogram,Python,Dictionary,Python 3.x,Character,Histogram,我试图数一数发生的信件并打印出来。这就是我到目前为止所做的: 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]
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!道具!但是有人知道如何按字母顺序对字典进行排序吗?d
是字典,而不是列表。在关键点上循环:
for key in d:
print('{} | {}'.format(key, d[key]))
或者,您将得到KeyError
异常
您可能对以下内容感兴趣:;这是一本计数字典:
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
为了好玩,让我们简化您的代码。您可以在初始字符串上使用set()来获得唯一字符的列表,然后只使用列表的count方法
def histogram(L):
d = {letter:L.count(letter) for letter in set(L)}
for key in d:
print "{} | {}".format(key, d[key]}
您遇到了什么错误?
d
是一个dict,您正在尝试索引它。谢谢,只有一件事。。。我如何打印实际字符,就像它正确打印d[key]一样,但当它打印d时,它只打印整个字典。@nearocprogrammer:printkey
。哦,等等,我太蠢了。。。谢谢将接受并更新为塑料件,我如何按字母顺序排列打印件?还是按字母顺序对字典排序@马蒂恩Pieters@NoviceProgrammer:sorted(d)
按排序顺序列出键。这是非常低效的,并且假定L
只是一个字母列表。