Основная проблема в Python 2.7 заключается в том, что печать словаря включает преобразование его в строку, и эта строка будет str
, а не unicode
.Отсюда и ваш вывод.
Однако, когда вы визуализируете отдельные элементы, вы обнаружите, что они в порядке:
>>> d = {u'Osaka': [{u'\u3086\u3081\u3044\u3089\u3093\u304b\u306d': u'Takajin Yashiki'}]}
>>> for k, v in d.viewitems():
... for pair in v:
... for song, artist in pair.viewitems():
... print k, song, artist
...
Osaka ゆめいらんかね Takajin Yashiki
Обратите внимание, что это поведение Python 2.В Python 3, где str
- это текст, эти данные будут напечатаны как UTF-8 и должны естественно отображаться в консоли, если у вас установлены необходимые шрифты для японских глифов:
(3.7) >>> print(d)
{'Osaka': [{'ゆめいらんかね': 'Takajin Yashiki'}]}