如何优化python递归

时间:2016-12-07 00:29:28

标签: python recursion optimization

我有以下代码,必须转换此元组

div

到这样的字典

(
    'person.firstname',
    'person.patronymic',
    'person.documents.type',
    'person.documents.number',
    'person.employee_set.unit.short_name',
    'person.employee_set.group_set.name',
    'person.employee_set.group_set.period.code',
    'unit.short_name',
)

代码:

    {
    "person": {
        "patronymic": {}, 
        "documents": {
            "type": {}, 
            "number": {}
        }, 
        "employee_set": {
            "unit": {
                "short_name": {}
            }, 
            "group_set": {
                "name": {}, 
                "period": {
                    "code": {}
                }
            }
        }, 
        "firstname": {}
    }, 
    "unit": {
        "short_name": {}
    }
}

可以在没有递归的情况下优化此代码吗?据我了解它有尾递归,但我不明白如何在循环中转换它

1 个答案:

答案 0 :(得分:2)

我重写了没有递归的函数。

company.companies.companyName[indexPath.row]

算法:我将每条路径分成几个部分,然后在一个循环中建立一个子句,保留一个参考def to_dict(items): res = {} for item in items: parts = item.split('.') dest = res for part in parts: if not part in dest: dest[part] = {} dest = dest[part] return res to_dict([ 'person.firstname', 'person.patronymic', 'person.documents.type', 'person.documents.number', 'person.employee_set.unit.short_name', 'person.employee_set.group_set.name', 'person.employee_set.group_set.period.code', 'unit.short_name', ]) 到我目前所在的字典部分。