2013-11-24 7 views
31

Ich versuche, einen hübschen Druck eines Wörterbuchs zu bekommen, aber ich habe kein Glück:Python pprint Wörterbuch auf mehreren Linien

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

ich die Ausgabe wollte auf mehreren Linien sein, so etwas wie folgt aus:

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

kann pprint dies tun? Wenn nicht, welches Modul macht das? Ich verwende Python 2.7.3

Antwort

47

Verwenden width=1 oder width=-1:

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

Was tun negative Breiten? – Tim

+0

@Tim: Ich habe es gerade versucht, und es hat funktioniert, aber ich weiß nicht, ob das irgendwo dokumentiert ist. –

+0

Negative Breiten machen nichts besonderes. Wenn der Code mitgeht, prüft er, ob die Länge der Teilausgabe-Zeichenfolge "

16

Wenn Sie ziemlich versuchen, die Umgebungsvariablen drucken:

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

Sie die dict umwandeln könnte json durch json.dumps(d, indent=4)

print(json.dumps(item, indent=4)) 
{ 
    "second": 456, 
    "third": { 
     "1": 1, 
     "2": 2 
    }, 
    "first": 123 
}