Правильно распечатать класс как словарь
У меня есть словарь словарей классов объектов, например, так:
mydict = {'key1':{'key2':myclass('myclass1')}}
Теперь объект myclass содержит dict
что я хочу использовать в качестве его __repr__
за pprint
цели. Так что я:
class myclass:
def __init__(self,name):
self.name = name
self.some_dictionary = {1:{1:1,2:2,3:3,4:4},100:{100:100,200:200,300:300},1000:{1000:1000,2000:2000,3000:3000},10000:{10000:10000}}
def __repr__(self):
import pprint
return pprint.pformat(self.some_dictionary)
Проблема в том, что когда я делаю
pprint(mydict)
отступ неправильный. Ключи myclass.some_dictionary
в конечном итоге на том же уровне отступа, что и ключи mydict
, Вот так:
mydict = {'key1':{'key11':myclass('c1'),'key12':myclass('c11')},'key2':{'key21':myclass('c2'),'key22':myclass('c21')}}
pprint.pprint(mydict)
выход:
{'key1': {'key11': {1: {1: 1, 2: 2, 3: 3, 4: 4},
100: {100: 100, 200: 200, 300: 300},
1000: {1000: 1000, 2000: 2000, 3000: 3000},
10000: {10000: 10000}},
'key12': {1: {1: 1, 2: 2, 3: 3, 4: 4},
100: {100: 100, 200: 200, 300: 300},
1000: {1000: 1000, 2000: 2000, 3000: 3000},
10000: {10000: 10000}}},
'key2': {'key21': {1: {1: 1, 2: 2, 3: 3, 4: 4},
100: {100: 100, 200: 200, 300: 300},
1000: {1000: 1000, 2000: 2000, 3000: 3000},
10000: {10000: 10000}},
'key22': {1: {1: 1, 2: 2, 3: 3, 4: 4},
100: {100: 100, 200: 200, 300: 300},
1000: {1000: 1000, 2000: 2000, 3000: 3000},
10000: {10000: 10000}}}}
Есть ли способ получить pprint
выровнять все так, как если бы я просто передал ему словарь (т.е. 1
выровнен с 100
, 1000
, так далее.)?