Использование pprint для OrderedDicts, когда dict создается с двумя списками
Когда у меня есть OrderedDict
создан из двух списков, и если я пытаюсь использовать pprint
это не работает, как ожидалось, но все работает нормально, если я создаю OrderedDict
обычно.
Какие-либо дополнительные шаги необходимо предпринять, чтобы получить ожидаемый вывод каждого значения ключа в отдельной строке, если OrderedDict создается с двумя списками?
import pprint
from collections import OrderedDict
pprint не работает
l1 = [ 'a', 'b', 'x', 'd']
l2 = [ ['abc', 'def'], ['idk', 'jfk'], ['mnp'], ['oye oye']]
dic = OrderedDict(zip(l1, l2))
pprint.pprint(dic, width = 1)
OrderedDict([('a', ['abc', 'def']), ('b', ['idk', 'jfk']), ('x', ['mnp']), ('d', ['oye oye'])])
Работает!!!
dic2 = OrderedDict()
dic2 = {'a': 'abc', 'x' : 'xyz', 'b' : 'boy'}
pprint.pprint(dic2, width = 1)
{'a': 'abc',
'b': 'boy',
'x': 'xyz'}
1 ответ
Решение
В версии, которая, по вашему мнению, работает, вы не печатаете OrderedDict
, но обычный dict
, Видеть, что dic2 = {'a': 'abc', 'x' : 'xyz', 'b' : 'boy'}
это обычный дикт
Чтобы создать OrderedDict
из dict
Вы должны были написать:
dic2 = OrderedDict({'a': 'abc', 'x' : 'xyz', 'b' : 'boy'})
результат будет таким же, как zip
версия.
Кажется, что Python 2.7 не поддерживает pprint
от OrderedDict
см. здесь для некоторых обходных путей.