Hier ist eine weitere Antwort, die funktioniert, indem die Bestandsfunktion pprint()
intern überschrieben und verwendet wird . Im Gegensatz zu meinem früher man es wird handhaben OrderedDict
‚s in einem anderen Behälter, wie ein list
und soll auch gegeben alle optionales Schlüsselwort Argumente verarbeiten kann - aber es nicht das gleiche Maß an Kontrolle über die Ausgabe hat , dass der andere gewährt.
Dabei wird die Ausgabe der Bestandsfunktion in einen temporären Puffer umgeleitet und anschließend mit einem Wort umbrochen, bevor sie an den Ausgabestream weitergeleitet wird. Die endgültige Ausgabe ist zwar nicht besonders hübsch, aber anständig und möglicherweise "gut genug", um sie zu umgehen.
Update 2.0
Vereinfacht durch Verwendung des Standardbibliotheksmoduls textwrap
und geändert, um sowohl in Python 2 als auch in Python 3 zu funktionieren.
from collections import OrderedDict
try:
from cStringIO import StringIO
except ImportError: # Python 3
from io import StringIO
from pprint import pprint as pp_pprint
import sys
import textwrap
def pprint(object, **kwrds):
try:
width = kwrds['width']
except KeyError: # unlimited, use stock function
pp_pprint(object, **kwrds)
return
buffer = StringIO()
stream = kwrds.get('stream', sys.stdout)
kwrds.update({'stream': buffer})
pp_pprint(object, **kwrds)
words = buffer.getvalue().split()
buffer.close()
# word wrap output onto multiple lines <= width characters
try:
print >> stream, textwrap.fill(' '.join(words), width=width)
except TypeError: # Python 3
print(textwrap.fill(' '.join(words), width=width), file=stream)
d = dict((('john',1), ('paul',2), ('mary',3)))
od = OrderedDict((('john',1), ('paul',2), ('mary',3)))
lod = [OrderedDict((('john',1), ('paul',2), ('mary',3))),
OrderedDict((('moe',1), ('curly',2), ('larry',3))),
OrderedDict((('weapons',1), ('mass',2), ('destruction',3)))]
Beispielausgabe:
pprint(d, width=40)
» {'john': 1, 'mary': 3, 'paul': 2}
pprint(od, width=40)
» OrderedDict([('john', 1), ('paul', 2),
('mary', 3)])
pprint(lod, width=40)
» [OrderedDict([('john', 1), ('paul', 2),
('mary', 3)]), OrderedDict([('moe', 1),
('curly', 2), ('larry', 3)]),
OrderedDict([('weapons', 1), ('mass',
2), ('destruction', 3)])]