如何使用namedtup在Python中实现树结构

2024-09-30 05:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关键词,例如友好。它产生一个子词,如温暖,而从父词,如朋友下降。在

from collections import namedtuple

keyword = 'friendly'
childword = 'warm'
parentword = 'friend'

connect=namedtuple(keyword,'children parents')
output = connect([childword],[parentword])  

因此,我可以使用输出.子项看看我的孩子们是谁。然而,我真正想做的是打字

^{pr2}$

看到孩子们的关键词友好。我该怎么做?我对Python完全陌生;我甚至不确定这是否可行。在


Tags: fromimportconnect孩子朋友namedtuple关键词keyword
1条回答
网友
1楼 · 发布于 2024-09-30 05:28:08

如果要定义树结构,可以使用namedtuple来实现:

from collections import namedtuple

TreeNode = namedtuple('TreeNode', ['word', 'children'])

friend = TreeNode(word='friend', children=[])
friendly = TreeNode(word='friendly', children=[])
warm = TreeNode(word='warm', children=[])

friend.children.append(friendly)
friendly.children.append(warm)

print(friendly.children)

结果是:

^{pr2}$

不过,这是一种非常类似于C的方式;您最好使用一个存储边缘关系的图形或树数据结构,例如:

children = dict()
children['friend'] = ['friendly']
children['friendly'] = ['warm']

def parents(word):
    ps = []
    for k in children:
        if word in children[k]:
            ps.append(k)
    return ps

print(children['friendly'])
print(parents('friendly'))

这就产生了

['warm']
['friendly']

有一篇关于Implementing Graphs in Python的文章,你可能会觉得有用。

相关问题 更多 >

    热门问题