python - 自动化深度嵌套函数python

标签 python

我有一个包含深度嵌套子项的数据库模型。我正在尝试将所有底层 id(所有级别)添加到字典条目中。我当前的代码如下所示:

children = obj.children
    for child in children:
        data["children_ids"].append(child.id)
        for child in child.children:
            data["children_ids"].append(child.id)
            for child in child.children:
                data["children_ids"].append(child.id)
                for child in child.children:
                    data["children_ids"].append(child.id)

这段代码功能齐全,但问题相当明显。我不想一遍又一遍地编写相同的代码:它丑陋、不切实际并且不太易于维护。我该怎么做?

最佳答案

使用递归函数在不同的 child 上运行相同的代码:

def add_children_ids(ids, children):
    for child in children:
        ids.append(child.id)
        add_children_ids(ids, child.children)

children = obj.children
data['children_ids'] = []
add_children_ids(data['children_ids'], children)

因为 ids 是一个可变列表,所以没有必要返回

关于python - 自动化深度嵌套函数python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873939/

相关文章:

python - 使用正则表达式查找和替换电子邮件地址

python - 我需要在 Replit 上播放声音方面的帮助

.net - 替换 for...if 数组迭代

python - 如何阻止用户输入 1582 年之前的年份 (Python)

python - 在pyparsing中,如何分配一个 "no match"键值?

python - 在 python 3.4 中将字符串日期转换为时间戳

Python CSV 插入最后换行符 - 我怎样才能避免它?

python - 如何在 django admin 中处理这种特殊情况?

python - 如何将包含 Unicode 代理项对的 JSON 编码数据转换为字符串?

python - 使用 mmap 对象写入物理地址