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

Pythonで辞書の深さを見つける


Python辞書はネストできます。つまり、辞書内に辞書があります。この記事では、ネストされた辞書がある場合に、辞書内のネストのレベルを計算する方法を説明します。

文字列変換あり

このアプローチでは、辞書全体を文字列に変換します。次に、辞書がネストされているレベルを示す残りの{の数を数えます。

dictA = {1: 'Sun', 2: {3: {4:'Mon'}}}
dictStr = str(dictA)
cnt = 0
for i in dictStr :
   if i == "{":
      cnt += 1
print("The depth of dictionary: ",cnt)

出力

上記のコードを実行すると、次の結果が得られます-

The depth of dictionary: 3

再帰あり

辞書の値をチェックするために自分自身を再帰的に呼び出す関数を設計できます。内部要素がディクショナリであると評価されている限り、関数はそれ自体を呼び出し、ディクショナリの深さの結果を取得します。

def finddepth(dictA):
   if isinstance(dictA, dict):
      return 1 + (max(map(finddepth, dictA.values()))
         if dictA else 0)

   return 0

dictA = {1: 'Sun', 2: {3: {4:'Mon'}}}
print("The depth of dictionary: ",finddepth(dictA))

出力

上記のコードを実行すると、次の結果が得られます-

The depth of dictionary: 3

  1. Pythonの辞書メソッド

    以下に示すPythonの辞書メソッドがいくつかあります- Sr.No メソッドの名前と説明 1 Python辞書clear() すべてのアイテムをクリアする 2 Python辞書copy() 辞書のコピー 3 keys()からのPython辞書 指定されたシーケンスから辞書を作成します 4 Pythonディクショナリget() キーの価値を得る 5 Python辞書items() 辞書のアイテムの表示 6 Python辞書keys() すべてのキーを表示 7

  2. Python辞書でゼロ以外の値の平均を見つける方法は?

    これを行うには、辞書を繰り返し処理し、最初にゼロ値を除外します。次に、フィルタリングされた値の合計を取ります。最後に、これらのフィルタリングされた値の数で割ります。 例 my_dict = {"foo": 100, "bar": 0, "baz": 200} filtered_vals = [v for _, v in my_dict.items() if v != 0] average = sum(filtered_vals) / len(filtered_vals) print(average) 出力 これにより出力が得られます