2

我的问题如下。我们有 dict,它的所有键和值都是 unicode,例如:

ab = {
    u'a': u'A',
    u'b': u'B',
    u'c': u'C',
}

我想将其转换为字符串。显然,当我这样做时:

str(ab)

我将收到:

"{u'a': u'A', u'c': u'C', u'b': u'B'}"

如果我做:

unicode(ab)

我将收到:

u"{u'a': u'A', u'c': u'C', u'b': u'B'}"

我的预期结果是:

"{'a': 'A', 'c': 'C', 'b': 'B'}"

目前我发现,如果我执行 json.dumps,它会正确地将其转换为字符串,而在每个键和值之前没有额外的 'u',但它也会将 True 更改为 true 和其他 javascript 方言差异。

有什么不同于在我的数据结构上递归迭代的解决方法?

4

2 回答 2

8

不,您需要手动将每个项目转换为字符串,然后将 dict 字符串化,并注意除非 Unicode 数据恰好都是 ASCII,否则您可能会遇到问题。做出这样的假设,您可以使用 dict 理解使其更快更简洁:

print({str(key): str(value) for key, value in ab.items()})
{'a': 'A', 'c': 'C', 'b': 'B'}

如果您使用的是 2.7.3 之前的 Python 版本,但没有字典推导:

dict((str(key), str(value)) for key, value in ab.items())
于 2012-06-21T13:56:06.443 回答
0

如果您使用的是 python 2.x:

dict( map(str, item) for item in ab.iteritems() )
于 2012-06-21T14:37:03.317 回答