我正在使用计数器from collections import Counter
,我想使用matplotlib.pylot
打印其值。
当我尝试使用:
时plt.bar(range(len(cnt)), cnt.values(), align='center')
plt.xticks(range(len(cnt)), cnt.keys())
plt.show()
我收到以下错误:
ValueError:matplotlib显示文本必须包含所有代码点< 128或使用Unicode字符串
这就是我试图将Counter字典键转换为Unicode的原因。
答案 0 :(得分:7)
如果你正在使用Python 2.7,你可以使用dict理解:
unidict = {k.decode('utf8'): v.decode('utf8') for k, v in strdict.items()}
对于旧版本:
unidict = dict((k.decode('utf8'), v.decode('utf8')) for k, v in strdict.items())
(这假设您的字符串当然是UTF-8。)
答案 1 :(得分:1)
因此,我认为操作员要求使用Unicode,而不是UTF-8。 Unicode不是一种编码,它只是实际的文本。那么这会不会更准确和/或更易读?
unidict = {unicode(k): unicode(v) for k, v in strdict.items()}