获取子节点(如果存在),否则在Python中创建

乔克·马蒂尼(JokerMartini)

我有一个包含两个属性“名称”和“子级”的基本类。

class Node():
    def __init__(self, name):
        self.name = name
        self.children = []

我有一个核心根节点,如下所示:

# Create Master Root Node
root = Node('root')

我将如何创建一个函数,该函数可以将路径传递到树中的特定节点,然后该函数返回该节点。但是,如果该节点不存在,它将创建/追加到树上,并仍然返回该节点。

path = ['Leslie','Marie','Tori'] # simple example

def get_node_by_path(path=[])...

如果路径在到达路径末尾之前发生故障,它将自动创建丢失的节点,以使整个路径完整。

在此处输入图片说明

path = ['Leslie','Marie','Tori','Kevin'] # more complex requires two nodes to be created

def get_node_by_path(path=[])...

在此处输入图片说明

罗克·波夫西奇(Rok Povsic)

我会做这样的事情。这是一个非递归的解决方案。

def get_node_by_path(path):
    cur_node = root
    for elem_name in path:
        found = False
        for child in cur_node.children:
            if child.name == elem_name:
                cur_node = child
                found = True
                break
        if not found:
            new_node = Node(elem_name)
            cur_node.children.append(new_node)
            cur_node = new_node
    return cur_node

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果/否则在python中

来自分类Dev

如果/否则在Python

来自分类Dev

除非是叶节点,否则在递归树结构中获取子级的属性

来自分类Dev

如果数组存在,则将对象推入数组,否则在MongoDB中使用对象创建数组

来自分类Dev

如果名称存在则更新,否则在SQL Server中插入

来自分类Dev

如果不存在则插入,否则在Netezza中对其进行更新

来自分类Dev

如果column不为null则更新记录,否则在laravel中创建新记录

来自分类Dev

如果 mysql 输入为空回显默认图像,否则在表中获取图片

来自分类Dev

Python-pygithub如果文件存在,则更新否则创建

来自分类Dev

VBA检查目录是否存在,如果存在退出子,否则不存在,创建

来自分类Dev

如果字段存在,则在MySQL和BASH中回显“某物”,否则插入表中-输出到变量?

来自分类Dev

如果存在新的子节点,如何使用python在每次迭代时附加到JSON中的子节点?

来自分类Dev

如果该值存在,则增加该值,否则在DynamoDB中添加一个新条目

来自分类Dev

如果该值存在,则增加该值,否则在DynamoDB中添加一个新条目

来自分类Dev

如果否则在数组.push()中的简写

来自分类Dev

在Neo4J中,创建两个节点之间的关系,但是如果其中一个节点不存在,则在同一调用中创建关系

来自分类Dev

如果否则在PHP站

来自分类Dev

如果存在,则在MySQL中重复行

来自分类Dev

如果不存在则在 Neo4j 中创建关系,如果存在则更新属性值

来自分类Dev

如果不存在但不在tmux中附加会话,则在后台创建会话

来自分类Dev

如果不存在,则在oracle数据库中自动创建表

来自分类Dev

如果文件已经存在,则在Windows中复制文件时为文件创建的日期错误

来自分类Dev

如果不存在但不在tmux中附加会话,则在后台创建会话

来自分类Dev

如果不存在php,则在其他文件夹中创建txt文件

来自分类Dev

如果文件夹不存在,则在 vbs 中创建文件夹

来自分类Dev

如果 yml 文件不存在,则在 mysql 中创建数据库时出错

来自分类Dev

Python Pandas:如果数据为NaN,则更改为0,否则在数据框中更改为1

来自分类Dev

Delphi 2010-PID是否存在?如果是,则在列表框中显示PID,否则从列表框中删除PID

来自分类Dev

如果在表1中存在,则显示表2,否则在SQL中为表3记录显示表1

Related 相关文章

  1. 1

    如果/否则在python中

  2. 2

    如果/否则在Python

  3. 3

    除非是叶节点,否则在递归树结构中获取子级的属性

  4. 4

    如果数组存在,则将对象推入数组,否则在MongoDB中使用对象创建数组

  5. 5

    如果名称存在则更新,否则在SQL Server中插入

  6. 6

    如果不存在则插入,否则在Netezza中对其进行更新

  7. 7

    如果column不为null则更新记录,否则在laravel中创建新记录

  8. 8

    如果 mysql 输入为空回显默认图像,否则在表中获取图片

  9. 9

    Python-pygithub如果文件存在,则更新否则创建

  10. 10

    VBA检查目录是否存在,如果存在退出子,否则不存在,创建

  11. 11

    如果字段存在,则在MySQL和BASH中回显“某物”,否则插入表中-输出到变量?

  12. 12

    如果存在新的子节点,如何使用python在每次迭代时附加到JSON中的子节点?

  13. 13

    如果该值存在,则增加该值,否则在DynamoDB中添加一个新条目

  14. 14

    如果该值存在,则增加该值,否则在DynamoDB中添加一个新条目

  15. 15

    如果否则在数组.push()中的简写

  16. 16

    在Neo4J中,创建两个节点之间的关系,但是如果其中一个节点不存在,则在同一调用中创建关系

  17. 17

    如果否则在PHP站

  18. 18

    如果存在,则在MySQL中重复行

  19. 19

    如果不存在则在 Neo4j 中创建关系,如果存在则更新属性值

  20. 20

    如果不存在但不在tmux中附加会话,则在后台创建会话

  21. 21

    如果不存在,则在oracle数据库中自动创建表

  22. 22

    如果文件已经存在,则在Windows中复制文件时为文件创建的日期错误

  23. 23

    如果不存在但不在tmux中附加会话,则在后台创建会话

  24. 24

    如果不存在php,则在其他文件夹中创建txt文件

  25. 25

    如果文件夹不存在,则在 vbs 中创建文件夹

  26. 26

    如果 yml 文件不存在,则在 mysql 中创建数据库时出错

  27. 27

    Python Pandas:如果数据为NaN,则更改为0,否则在数据框中更改为1

  28. 28

    Delphi 2010-PID是否存在?如果是,则在列表框中显示PID,否则从列表框中删除PID

  29. 29

    如果在表1中存在,则显示表2,否则在SQL中为表3记录显示表1

热门标签

归档