2013-11-24 11 views
31

Sto cercando di ottenere una bella stampa di un dizionario, ma sto avendo senza fortuna:pitone dizionario pprint su più righe

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

volevo l'uscita di essere su più righe, qualcosa di simile a questo:

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

can pprint fare questo? Se no, quale modulo lo fa? Sto usando Python 2.7.3

risposta

47

Usa width=1 o width=-1:

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

Cosa fanno le larghezze negative? – Tim

+0

@Tim: l'ho appena provato, e ha funzionato, ma non so se questo è documentato da qualche parte. –

+0

Le larghezze negative non fanno nulla di speciale. Mentre il codice procede, controlla se la lunghezza della stringa di output parziale è '

16

se si sta cercando di stampare praticamente le variabili di ambiente, uso:

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

Si potrebbe convertire il dict a json through json.dumps(d, indent=4)

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