import jieba
import matplotlib.pyplot as plt
# _*_ coding:utf-8 _*_
txt=open("tangshi.txt","r",encoding="utf-8").read()
words=jieba.lcut(txt)

counts={}

for word in words:
    if word in ["春","夏","秋","冬"]:
        counts[word]=counts.get(word,0)+1;
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True) # 排序

bar_w=[]
bar_c=[]
for i in range(4):
    word,count=items[i]
    bar_w.append(word)
    bar_c.append(count)
    print("{0:<5}{1:>5}".format(word, count))

# 解决bar显示中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.bar(bar_w,bar_c)
plt.show()
# 春     1785
# 秋     1039
# 夏      114
# 冬       44



解决bar显示中文乱码问题

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

关于list assignment index out of range

举个例子 a是一个list
不要使用a[i]list a进行输入,应该使用append或者insert避免list的访问空

##正确代码
	bar_w.append(word)
    bar_c.append(count)
##错误代码
	bar_w[i]=word
	bar_c[i]=count