Использование 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см. здесь для некоторых обходных путей.

Другие вопросы по тегам