Вы можете переопределить pprint()
и перехватывать вызовы для OrderedDict
. Вот простая иллюстрация. Как написано, код переопределения OrderedDict
игнорирует любые необязательные ключевые слова stream
, indent
, width
или depth
, которые могли быть переданы, но могут быть улучшены для их реализации. К сожалению, этот метод не обрабатывает их внутри другого контейнера, такого как list
из OrderDict
s
from collections import OrderedDict
from pprint import pprint as pp_pprint
def pprint(obj, *args, **kwrds):
if not isinstance(obj, OrderedDict):
# use stock function
return pp_pprint(obj, *args, **kwrds)
else:
# very simple sample custom implementation...
print "{"
for key in obj:
print " %r:%r" % (key, obj[key])
print "}"
l = [10, 2, 4]
d = dict((('john',1), ('paul',2), ('mary',3)))
od = OrderedDict((('john',1), ('paul',2), ('mary',3)))
pprint(l, width=4)
# [10,
# 2,
# 4]
pprint(d)
# {'john': 1, 'mary': 3, 'paul': 2}
pprint(od)
# {
# 'john':1
# 'paul':2
# 'mary':3
# }