转换字典键和键的最快方法从str到Unicode的值?

时间:2013-05-23 03:39:09

标签: python unicode graph dictionary

我正在使用计数器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的原因。

2 个答案:

答案 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()}