5

我正在使用计数器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 display text must have all code points < 128 or use Unicode strings

这就是我尝试将 Counter 字典键转换为 Unicode 的原因。

4

2 回答 2

12

如果您使用的是 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 格式的。)

于 2013-05-23T03:45:53.443 回答
0

所以,我认为操作要求的是 unicode,而不是 UTF-8。Unicode 不是一种编码,它只是实际的文本。那么这不会更准确和/或可读吗?

unidict = {unicode(k): unicode(v) for k, v in strdict.items()}
于 2018-10-11T17:26:59.783 回答