У меня есть некоторые объекты SQLAlchemy, содержащие списки более объектов SQLAlchemy и т. Д. (Примерно для 5 уровней). Я хочу преобразовать все объекты в словари.Каков наиболее экономичный способ преобразования вложенных объектов Python в словари?
Я могу преобразовать объект в словарь, используя свойство __dict__
, без проблем. Тем не менее, у меня возникли проблемы с поиском наилучшего способа конвертировать все вложенные объекты, без необходимости делать каждый уровень явно.
До сих пор это лучшее, что я могу придумать, но оно не исправляется должным образом. Это в основном ломается после одного прохода, поэтому в моей логике явно что-то не так. Вы видите, что с этим не так?
Я надеюсь сделать:
all_dict = myDict(obj.__dict__)
def myDict(d):
for k,v in d.items():
if isinstance(v,list):
d[k] = [myDict(i.__dict__) for i in v]
else:
d[k] = v
return d
Хочет результирующие словари, чтобы имитировать то же самое вложенную структуру, или вы хотите сгладить ее? –
Обратите внимание, что с помощью свойства '__dict__' вы также будете включать в себя все методы и прочее из базовых классов. –
Тим, я бы согласился, но моя цель - сгладить используя существующий ключ в качестве ссылки.Она ли это имеет смысл? – MFB