Форум сайта python.su
1
Уважаемые форумчане
Как итерировать такой словарь
slovar = {1:["Организация1", 1000.00],2:["Организация2", 2000.00],3:["Организация3", 3000.00],4:["Организация4", 4000.00]}
Отредактировано ingfa_1981 (Май 7, 2014 16:41:03)
Офлайн
568
for k, (v, m) in slovar.items(): print (k, v, m)
Офлайн
1
# -*- coding: utf-8 -*- slovar = {1:["Организация1", 1000.00],2:["Организация2", 2000.00],3:["Организация3", 3000.00],4:["Организация4", 4000.00]} print slovar.items() for k, (v, m) in slovar.items(): print k, v, m
[(1, ['\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f1', 1000.0]), (2, ['\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f2', 2000.0]), (3, ['\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f3', 3000.0]), (4, ['\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f4', 4000.0])] 1 Организация1 1000.0 2 Организация2 2000.0 3 Организация3 3000.0 4 Организация4 4000.0
Офлайн
3
А почему в 2.7 питоне выводятся коды utf-8 вместо русских букв?
В python 2.x строки - это просто байты (а не коды utf-8). Так они хранятся в памяти. Поскольку ты обращаешься к свойству объекта slovar, а не строке, то его содержимое отображается именно так, как хранится в этом словаре. Но попробуй обратиться к конкретной строке (например, slovar.values() или slovar.items()), и она преобразуетя в удобоваримую кирилицу.
Но на самом деле всю магию декодирования реализует print. Вот, например, набери в консоли:
>>> "Организация", type("Организация") ('\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f', <type 'str'>) >>> u"Организация", type(u"Организация") (u'\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f', <type 'unicode'>)
>>> print u'\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f' Организация
Офлайн