İşte hisse senedi pprint()
işlevini dahili olarak geçersiz kılarak ve kullanarak çalışan başka bir cevap . Aksine benim tek önceki o olacak ele OrderedDict
'böyle bir şekilde başka bir kaba içerde list
ve ayrıca verilen isteğe bağlı herhangi bir anahtar kelime argümanları ele almak gerekir - ancak diğeri tanınan bu çıkışı üzerinde kontrol aynı derecede sahip değildir.
Stok fonksiyonunun çıktısını geçici bir tampona yeniden yönlendirerek çalışır ve ardından bunu çıktı akışına göndermeden önce sözcük sarar. Üretilen nihai çıktı olağanüstü derecede güzel olmasa da, nezih ve geçici çözüm olarak kullanmak için "yeterince iyi" olabilir.
2.0 Güncellemesi
Standart kitaplık textwrap
modülü kullanılarak basitleştirildi ve hem Python 2 hem de 3'te çalışacak şekilde değiştirildi.
from collections import OrderedDict
try:
from cStringIO import StringIO
except ImportError:
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:
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()
try:
print >> stream, textwrap.fill(' '.join(words), width=width)
except TypeError:
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)))]
Örnek çıktı:
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)])]