2

私の問題は次のとおりです。すべてのキーと値を Unicode として持つ dict があります。例:

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

いいえ、各項目を手動で文字列に変換してから辞書を文字列化する必要があります。Unicode データがすべて ASCII でない限り、問題が発生する可能性があることに注意してください。その仮定を行うと、辞書内包表記を使用して、より迅速かつ簡潔にすることができます。

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

2.7.3 より前のバージョンの Python を使用している場合、dict 内包表記なし:

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 に答える