ホームページ >バックエンド開発 >Python チュートリアル >入れ子になった辞書からキーと値のペアを再帰的に反復して出力するにはどうすればよいですか?

入れ子になった辞書からキーと値のペアを再帰的に反復して出力するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-29 17:56:14697ブラウズ

How Can I Recursively Iterate and Print Key-Value Pairs from a Nested Dictionary?

ネストされた辞書値の反復

このプログラミング シナリオでは、私たちの目標は、潜在的に多層の辞書構造を走査し、値が含まれるキーと値のペアを出力することです。ネストされた辞書そのものではありません。値がネストされた辞書である場合は、それを再帰的に探索し、そのキーと値のペアも出力する必要があります。

これを実現するには、単純な反復手法では十分ではない場合があります。代わりに、再帰の力を活用できます。以下は、あらゆる深さのネストされた辞書を効果的に処理するために再帰を組み込んだ改訂された関数です。

def myprint(d):
    for k, v in d.items():
        if isinstance(v, dict):
            myprint(v)
        else:
            print("{0} : {1}".format(k, v))

最初の辞書で myprint を呼び出すことにより、関数は再帰ループに入ります。各キーと値のペアを参照し、値が辞書であるかどうかを確認します。存在する場合、関数は新しい入力として値辞書を使用して自分自身を呼び出し、ネストされたレベルに効果的にドリルダウンします。

値が辞書でない場合、関数は現在のキーと値のペアを単純に出力します。このプロセスは、辞書のすべてのレベルが走査されるまで続きます。

サンプルのネストされた辞書を使用したデモを次に示します:

d = {
    "xml": {
        "config": {
            "portstatus": {"status": "good"},
            "target": "1",
        },
        "port": "11",
    }
}

myprint(d)

これにより、目的の出力が生成されます:

xml : {config: {portstatus: {status: good}, target: 1}, port: 11}
config : {portstatus: {status: good}, target: 1}
portstatus : {status: good}
status : good
target : 1
port : 11

ご覧のとおり、この関数は辞書を再帰的に繰り返し、ネストされていない値をすべて出力し、ネストされた辞書にドリルダウンします。葉の節に到達するまで。

以上が入れ子になった辞書からキーと値のペアを再帰的に反復して出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。