Ich versuche, einen hübschen Ausdruck eines Wörterbuchs zu bekommen, aber ich habe kein Glück:
>>> 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 wollte, dass die Ausgabe in mehreren Zeilen erfolgt, ungefähr so:
{'first': 123,
'second': 456,
'third': {1: 1,
2: 2}
}
Kann pprint
das? Wenn nicht, welches Modul dann? Ich benutze Python 2.7.3 .
python
python-2.7
dictionary
pprint
mulllhausen
quelle
quelle
Antworten:
Verwenden Sie
width=1
oderwidth=-1
:In [33]: pprint.pprint(a, width=1) {'first': 123, 'second': 456, 'third': {1: 1, 2: 2}}
quelle
< width
. Jede negative Breite bedeutet nur, dass die Antwort immer "Nein" lautet. Eine Breite von 0 wird fast immer (oder vielleicht immer - es ist mir nicht wichtig genug, über perverse Fälle nachzudenken ;-)) dasselbe tun.Sie könnten das Diktat in json durch konvertieren
json.dumps(d, indent=4)
print(json.dumps(item, indent=4)) { "second": 456, "third": { "1": 1, "2": 2 }, "first": 123 }
quelle
null
und booleschen Werte (true / false) achten sollten . Dies sind JSON-Werte, nicht die Python-Objekte.datetime
):json.dumps({'d': datetime.now()})
stürzt mit abObject of type datetime is not JSON serializable
.Wenn Sie versuchen, die Umgebungsvariablen hübsch zu drucken, verwenden Sie:
pprint.pprint(dict(os.environ), width=1)
quelle
Zwei Dinge, die Sie zusätzlich zu Ryan Chous bereits sehr hilfreicher Antwort hinzufügen sollten:
sort_keys
Übergeben Sie das Argument für eine einfachere visuelle Darstellung Ihres Diktats, insb. wenn Sie mit Python vor 3.6 arbeiten (in dem Wörterbücher ungeordnet sind)print(json.dumps(item, indent=4, sort_keys=True)) """ { "first": 123, "second": 456, "third": { "1": 1, "2": 2 } } """
dumps()
funktioniert nur, wenn die Wörterbuchschlüssel Grundelemente sind (Zeichenfolgen, int usw.)quelle
sort_keys
ist ein gutes Argument. Leider, wie Sie sagen, nicht immer zutreffend:TypeError: Object of type Tag is not JSON serializable
...