Работа с ключами unicode в словаре python

Я изучаю API Twitter с помощью Python 2.7.x. Я сохранил ряд случайных твитов, и я пытаюсь их обработать. Каждый твит преобразуется в словарь с json.loads, и все словари являются частью списка.

Учитывая один твит, я хочу иметь возможность извлекать определенные поля из словаря. Клавиши – это все строки в Юникоде. Если я перебираю ключи в цикле, у меня нет проблем с печатью значений:

for i in tweet.keys(): print i, tweet[i] 

Таким образом, цикл выше работает отлично, но мне не удавалось выяснить, как вручную указать ключ. «u'text» – это ключ для фактического содержимого твита (фактический пост пользователя). Если я попытаюсь напечатать твит ['text'], я получу KeyError. Я наивно пробовал твит [u'text '], но это тоже не с KeyError.

Я думаю, мне интересно узнать, что делает цикл, когда он проходит через tweet.keys () по сравнению с тем, что я делаю, когда вручную указываю ключ. Обратите внимание: если я напечатаю значение i в цикле выше, будет напечатано имя ключа, но без юникодной упаковки. Когда ключ является «u'text», значение i является «текстом», или, по крайней мере, это то, что печатается на терминале.

Python 2 выполняет трансляцию между str и unicode ключами прозрачно для вас, если текст может быть закодирован в ASCII:

 >>> d = {u'text': u'Foo'} >>> d.keys() [u'text'] >>> 'text' in d True >>> u'text' in d True >>> d['text'] u'Foo' >>> d[u'text'] u'Foo' 

Это означает, что если вы получите KeyError для tweet['text'] , то этот словарь не имеет такого ключа .