0

次のような他の辞書で構成されるpython辞書があります(例):

{2: {4: {5: {6: {7: None}}}, 7: None}, 7: None}

最終的に次のようになるようにキーを抽出したいと思います。

[2,4,5,6,7,None]
[2,7,None]
[7,None]

この問題を再帰関数で解決しようとしましたが、うまくいきませんでした...

def f(d):
    paths = []
    try:
        for key in f.keys():
            path.append(f(d[key]))
    pass:
        pass

これを行う方法と方法はありますか?

4

1 に答える 1

1

以下はトリックを行うようです:

def f(d):
    paths = []
    for key, value in d.items():
        if value is None:
            paths.append([key, value])
        else:
            internal_lists = f(value)
            for l in internal_lists:
                paths.append([key] + l)
    return paths

1) あなたの try: ループの書き方が悪い: 構文は

try:
    xxx
except:
    xxx

ここで失敗すると思いますか?なぜ試すのですか?

2)あなたのループはどちらも正しくありません:

for key in f.keys():

f は関数であり、キーはありません。d します。

3) キーを扱う場合、出力のどこかにキーを保持する必要がありますが、現時点では保持しません。

于 2013-09-29T12:22:31.817 に答える