0

私が行った次のサブクラスに変換したいネストされた辞書があります。

class SubDict(dict):
    def __getattr__(self, attr):
        if attr in self.keys():
            return self.get(attr)

もしそうなら、それはベース dict に対してうまく機能します:

my_nested_dict = SubDict(my_nested_dict)

しかし、ネストされたものも SubDict に変換する必要があります。どうすればそれを達成できますか?

ありがとう!

4

2 に答える 2

1

ネストされた辞書を再帰し、それらを再帰的に変換する必要があります。

class SubDict(dict):
    def __init__(self, *args, **kw):
        super(SubDict, self).__init__(*args, **kw)
        for key, value in self.iteritems():
            if isinstance(value, dict):
                self[key] = SubDict(value)

あなたはcollections.defaultdictまったく調べましたか?これを使用して、非常に簡単にツリーをゼロから作成できます。

import defaultdict

def Tree(): return defaultdict(tree)
于 2013-02-05T14:49:52.180 に答える
0

あなたのSubDictクラスがここに示す以外に何もしない場合、これはdefaultdict Github の Harold Cooper による as documentの仕事です:

def tree(): return defaultdict(tree)
于 2013-02-05T14:50:03.553 に答える