Python树/字典

-3 投票
2 回答
521 浏览
提问于 2025-05-01 07:44

我正在做一个项目,想要创建一个Python的dict子类,然后在后面使用它。我需要在__init__方法里给self.key这个属性赋值,但我不太确定最好的做法是什么。

这是我目前的进展。

Class GoDown(dict):
    def __init__(self, *args, **kw):
        dict.__init__(self, *args, **kw)
        self.key = dict.keys() # I know this is incorrect this is where I am stuck

if __name__ == '__main__':
    t = GoDown(d=1)

在上面的例子中,我希望t.key的值等于'd'。但我不知道用dict子类的方式怎么做才好。

暂无标签

2 个回答

0

另一种方法是使用现成的树形结构,

你可以在这里找到:https://github.com/caesar0301/pyTree

pyTree 还提供了可视化树形结构的功能:

Harry[harry]
|___ Jane[jane]
|    |___ Diane[diane]
|         |___ George[george]
|              |___ Jill[jill]
|         |___ Mary[mary]
|    |___ Mark[mark]
|___ Bill[bill]
1

你可以这样来实现:

class GoDown(dict):
    """Dictionary with an additional attribute recording the initial key."""

    def __init__(self, **kwargs):
        if len(kwargs) != 1:
            raise TypeError("Exacly one keyword argument required.")
        super(GoDown, self).__init__(**kwargs)
        self.key = kwargs.keys()[0]

这样做可以防止用户传入额外的位置参数或关键字参数,因为我们去掉了 *args,并且检查了 kwargs 的长度。

撰写回答