【问题标题】:Fastest way to convert a dict's keys & values from str to Unicode?将字典的键和值从 str 转换为 Unicode 的最快方法?
【发布时间】:2016-10-04 15:09:29
【问题描述】:

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

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

【问题讨论】:

  • 听起来这不是您的应用程序的瓶颈。我会选择最干净/最明显的,而不是最快的。

标签: python unicode graph dictionary


【解决方案1】:

如果您使用的是 Python 2.7,则可以使用字典推导:

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 格式。)

【讨论】:

【解决方案2】:

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

unidict = {unicode(k): unicode(v) for k, v in strdict.items()}

【讨论】:

  • 如果您的默认字符串编码是 UTF-8,这与其他答案完全相同。 unicode 构造函数的行为与 str 对象上的 decode 方法相同。我只是认为明确str 对象以特定编码encoded (在我的答案中明确假设为UTF-8)并将它们转换为unicode 会更有帮助对象需要解码它们,这在概念上让很多用户感到困惑。
猜你喜欢
  • 2010-11-18
  • 1970-01-01
  • 2016-01-13
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 2017-06-20
相关资源
最近更新 更多