Pythonで辞書の入れ子を繰り返し処理する方法は何ですか?
Pythonでは、ネストされたループを使用して、辞書のネスト構造を反復処理することができます。以下は一般的な2つの方法です:
方法1:複数のループを使用する
辞書内の各ネストレベルを走査するために、複数のループを使用することができます。例えば、dataという名前の辞書にネストされた辞書やリストが含まれている場合、各レベルを走査するために複数のループを使用できます。以下のコード例では、ネストされた辞書を2つのレベルで走査する方法が示されています:
data = {
"key1": {
"subkey1": "value1",
"subkey2": "value2"
},
"key2": {
"subkey3": "value3",
"subkey4": "value4"
}
}
for key1 in data:
for key2 in data[key1]:
print(key1, key2, data[key1][key2])
このサンプルコードは、ネストされた各辞書のキーと対応する値を印刷します。
方法2: 再帰の使用
再帰関数を使用して、辞書のネスト構造を走査します。再帰は、関数内で自身を呼び出す技術の一種です。以下は、任意の階層にネストされた辞書を走査するために再帰関数を使用する方法を示すコード例です。
def traverse_dict(data):
for key, value in data.items():
if isinstance(value, dict):
traverse_dict(value)
elif isinstance(value, list):
for item in value:
traverse_dict(item)
else:
print(key, value)
data = {
"key1": {
"subkey1": "value1",
"subkey2": "value2"
},
"key2": {
"subkey3": ["value3", "value4"],
"subkey4": "value5"
}
}
traverse_dict(data)
この例では、ネストされた辞書やリストのキーと対応する値を出力しています。再帰関数では、まず現在の値が辞書またはリストかどうかを判断し、そうであれば再帰関数を続けて呼び出します。そうでない場合は、キーと値を出力します。これにより、ネストされた構造を段階的に走査し、最も内側のキーと値が見つかるまで処理を続けます。