<p>因为我没有你的文件,也无法复制你的具体例子,所以我会分开回答这两个问题</p>
<p>首先,为了为您的文件(表示为字符串列表)创建直方图作为字典,请遵循以下代码部分:</p>
<pre><code>list_of_sentences = ["this is my first code in python", "it's rainy today", "thanks"]
m_dict = {}
for sentence in list_of_sentences:
for letter in sentence:
if letter.isalpha():
if letter in m_dict.keys():
m_dict[letter]+= 1
else:
m_dict[letter] =1
print(m_dict)
</code></pre>
<p>输出:</p>
<pre><code>{'t': 6, 'h': 3, 'i': 6, 's': 5, 'm': 1, 'y': 4, 'f': 1, 'r': 2, 'c': 1, 'o': 3, 'd': 2, 'e': 1, 'n': 4, 'p': 1, 'a': 3, 'k': 1}
</code></pre>
<p>上面的方法将迭代文件中的字母并计数,如果您想迭代<code>a</code>到<code>z</code>,那么对于大文件将非常有效(此外,它还将打印文件中不存在的字母),您最好使用以下方法:</p>
<pre><code>for code in range(ord('a'), ord('z') + 1):
m_dict[chr(code)] = ''.join(list_of_sentences).count(chr(code))
</code></pre>
<p>输出:</p>
<pre><code>{'t': 6, 'h': 3, 'i': 6, 's': 5, 'm': 1, 'y': 4, 'f': 1, 'r': 2, 'c': 1, 'o': 3, 'd': 2, 'e': 1, 'n': 4, 'p': 1, 'a': 3, 'k': 1, 'b': 0, 'g': 0, 'j': 0, 'l': 0, 'q': 0, 'u': 0, 'v': 0, 'w': 0, 'x': 0, 'z': 0}
</code></pre>
<p>现在,当我们手中有了柱状图(让我们继续第一个柱状图),让我们按照您的意愿面对格式化柱状图的第二部分:</p>
<pre><code>def print_as_histogram(m_dict):
for letter in sorted(m_dict.keys()):
print(f'{letter} | {"*"*m_dict[letter]}')
print_as_histogram(m_dict)
</code></pre>
<p>输出:</p>
<pre><code>a | ***
c | *
d | **
e | *
f | *
h | ***
i | ******
k | *
m | *
n | ****
o | ***
p | *
r | **
s | *****
t | ******
y | ****
</code></pre>
<p>把信分类,因为在我看来它看起来更好</p>