Как я могу сказать dict() в Python 2 использовать unicode вместо строки байта? - программирование

Как я могу сказать dict() в Python 2 использовать unicode вместо строки байта?

Вот пример:

d = dict(a = 2)
print d
{'a': 2}

Как я могу описать конструктор dict(), чтобы использовать Unicode вместо того, чтобы писать строковые литералы, такие как u'a'? Я загружаю словарь из модуля json, который по умолчанию использует unicode. Я хочу использовать unicode с этого момента.

4b9b3361

Ответ 1

Чтобы получить dict с ключами Unicode, используйте строки Unicode при построении dict:

>>> d = {u'a': 2}
>>> d
{u'a': 2}

У Dicts, созданных из аргументов ключевого слова, всегда есть строковые ключи. Если вы хотите, чтобы они были Unicode (а также все остальные строки), переключитесь на Python 3.

Ответ 2

Аргументы ключевого слова в 2.x могут использовать только символы ASCII, что означает bytestrings. Либо используйте литерал dict, либо используйте один из конструкторов, который позволяет указать полный тип.

>>> dict(((u'a', 2),))
{u'a': 2}