Python Tree / Dict

时间:2014-11-03 14:37:07

标签: python

我正在开发一个项目,我想创建一个Python dict子类,然后再使用它。我需要在self.key中分配__init__属性,我不确定这样做的最佳方法。

这是我到目前为止所做的。

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 :(得分: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的长度来阻止用户传递其他位置或关键字参数。

答案 1 :(得分:0)

另一种方法是使用现成的树结构 https://github.com/caesar0301/pyTree

pyTree还提供了可视化树的可能性:

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