我有以下代码,必须转换此元组
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": {}
}
}
可以在没有递归的情况下优化此代码吗?据我了解它有尾递归,但我不明白如何在循环中转换它
答案 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',
])
到我目前所在的字典部分。