Я пытаюсь перебрать каждое значение в глубоко вложенном/смешанном списке и преобразовать любые экземпляры Decimal в строку, чтобы я мог хранить их в монго.
Моя попытка рекурсии достигла максимальной глубины. Я хотел бы решить это итеративно или в производительной манере.
Кажется, это не работает, но это моя последняя попытка:
def convert_decimals(root_obj):
objs_to_convert = [root_obj]
while objs_to_convert:
obj = objs_to_convert.pop(0)
for k, v in enumerate(obj):
if len(v):
objs_to_convert.append(v)
elif isinstance(v, Decimal):
obj[k] = str(v)
Пример ввода:
[
{
'Payments': {
'Payment': Decimal('495.64'),
'IsCapped': True,
'OtherFees': Decimal('0'),
'CapCostTotal': Decimal('27900'),
'Name': 'TestData',
'Program': {
'ProgramName': u'AST',
'Description': None
},
'Rate': Decimal('0.0254'),
'APR': Decimal('2.54'),
'AppliedIds': [
],
'Tax': Decimal('0')
}
}
]
После преобразования десятичные экземпляры должны быть строками