use*_*517 17 python dictionary alphabetical
下面的代码打印出txt文件中的单词,然后打印出该单词的实例数(例如a,26),问题是它不按字母顺序打印出来.任何帮助将非常感激
import re
def print_word_counts(filename):
s=open(filename).read()
words=re.findall('[a-zA-Z]+', s)
e=[x.lower() for x in (words)]
e.sort()
from collections import Counter
dic=Counter(e)
for key,value in dic.items():
print (key,value)
print_word_counts('engltreaty.txt')
Run Code Online (Sandbox Code Playgroud)
mgi*_*son 36
您只需要对项目进行排序.内置sorted应该非常好用:
for key,value in sorted(dic.items()):
...
Run Code Online (Sandbox Code Playgroud)
如果你删除该e.sort()行,那么这应该在大约相同的时间内运行.它不起作用的原因是因为字典基于hash表,它们按照散列值的顺序存储项目(当发生散列冲突时会有一些更复杂的东西).由于哈希函数从未在任何地方指定过,这意味着您不能指望字典保留您尝试提供的任何顺序,并且顺序是实现和版本相关的.对于其他简单情况,collections模块有一个OrderedDict子类,它确实保持插入顺序.但是,这不会对你有所帮助.