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:print
key
。哦,等等,我太蠢了。。。谢谢将接受并更新为塑料件,我如何按字母顺序排列打印件?还是按字母顺序对字典排序@马蒂恩Pieters@NoviceProgrammer:
sorted(d)
按排序顺序列出键。这是非常低效的,并且假定
L
只是一个字母列表。