我的职务:
def flat(errors: dict) -> dict:
result = {}
def inner(errors, key=None):
if type(errors) is dict:
for k, v in errors.items():
inner(v, k)
elif type(errors) is list:
for obj in errors:
inner(obj)
else:
result.update({key: errors})
inner(errors)
return result
儿子:
errors = {
"last_name": "Имя должно состоять из букв",
"birth_place": {
"address": {
"parts": [
{
"0": {
"id": "Неверный идентификатор",
},
},
{
"1": {
"id": "Неверный идентификатор",
},
},
],
},
},
"groups": [
{
"1": "Группа workers не существует",
},
],
}
我需要这样的输出:
{
"last_name": "Имя должно состоять из букв",
"birth_place.address.parts.0.id": "Неверный идентификатор",
"birth_place.address.parts.1.id": "Неверный идентификатор",
"groups.1": "Группа workers не существует",
}
我得到这个:
{'last_name': 'Имя должно состоять из букв', 'id': 'Неверный идентификатор', '1': 'Группа workers не существует'}
我怎么能用递归递增一个字符串变量?我有递归思维的问题
1条答案
按热度按时间uz75evzq1#
它只需要一个小的变化,你需要过去的列表到
inner
,所以你可以继续追加下一级的关键字到该列表。然后只需使用join
使最后一个键:输出:
声明一下,使用
key=[]
作为缺省参数有些危险,但在本例中,由于我从未修改过key
,因此使用它是安全的。