Python
 Computer >> コンピューター >  >> プログラミング >> Python

ネストされたPythonディクショナリを再帰的に反復する方法は?


以下にネストされたディレクトリオブジェクトを示します

D1={1: {2: {3: 4, 5: 6}, 3: {4: 5, 6: 7}}, 2: {3: {4: 5}, 4: {6: 7}}}

ディレクトリ内の各アイテムの値コンポーネントがディレクトリ自体である場合、次の再帰関数が繰り返し呼び出されます。

def iterdict(d):
  for k,v in d.items():        
     if isinstance(v, dict):
         iterdict(v)
     else:            
         print (k,":",v)

iterdict(D1)

出力

最初のディクショナリオブジェクトがこの関数に渡されると、すべてのキーと値のペアがトラバースされます。出力は次のとおりです。

3 4
5 6
4 5
6 7
4 5
6 7

  1. Pythonで辞書を反復処理する方法は?

    Pythonディクショナリオブジェクトを反復処理する方法は2つあります。 1つは、keys()リストの各キーに関連付けられた値をフェッチすることです。 >>> D1 = {1:a, 2:b, 3:c} >>> for k in D1.keys(): print (k, D1[k]) 1 a 2 b 3 c タプルのリストを返す辞書オブジェクトのitems()メソッドもあり、各タプルにはキーと値があります。次に、各タプルが2つの変数に解凍され、一度に1つの辞書アイテムが出力されます。 >>> D1={1:a, 2:b, 3:c

  2. Pythonで文字列を辞書に変換する方法は?

    ここでast.literal_eval()を使用して、文字列をPython式として評価できます。式ノードまたはPython式を含む文字列を安全に評価します。提供される文字列またはノードは、文字列、数値、タプル、リスト、dict、ブール値、およびなしのPythonリテラル構造のみで構成されます。例:  >>>import ast >>>x = ast.literal_eval("{'foo' : 'bar', 'hello' : 'world'}") >>