2013-11-24 3 views
31

Я пытаюсь получить симпатичную печать словаря, но я не имею никакой удачи:питона pprint словарь по нескольким линиям

>>> import pprint 
>>> a = {'first': 123, 'second': 456, 'third': {1:1, 2:2}} 
>>> pprint.pprint(a) 
{'first': 123, 'second': 456, 'third': {1: 1, 2: 2}} 

Я хотел выхода быть на нескольких строках, что-то вроде этого:

{'first': 123, 
'second': 456, 
'third': {1: 1, 
      2: 2} 
} 

может pprint сделать это? Если нет, то какой модуль это делает? Я использую Python 2.7.3

ответ

47

Использование width=1 или width=-1:

In [33]: pprint.pprint(a, width=1) 
{'first': 123, 
'second': 456, 
'third': {1: 1, 
      2: 2}} 
+1

Что делают отрицательные ширины? – Tim

+0

@Tim: Я просто попробовал, и это сработало, но я не знаю, где это где-то документировано. –

+0

Отрицательная ширина не делает ничего особенного. По мере прохождения кода он проверяет, является ли длина частичной выходной строки '

16

Если вы пытаетесь довольно печатать переменные среды, использование:

pprint.pprint(dict(os.environ), width=1) 
3

Вы можете преобразовать Dict в json via json.dumps(d, indent=4)

print(json.dumps(item, indent=4)) 
{ 
    "second": 456, 
    "third": { 
     "1": 1, 
     "2": 2 
    }, 
    "first": 123 
} 
Смежные вопросы