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

Pythonの辞書でゼロ以外の値の平均を求める方法

Pythonの辞書に含まれる数値から、ゼロ(0)の値を除外した平均を計算したいケースはよくあります。最もシンプルで読みやすい方法は、辞書を走査してゼロ以外の値だけを抽出し、その合計を要素数で割ることです。

基本的な手順

  1. 辞書を反復処理し、ゼロ以外の値だけをリスト内包表記でフィルタリングする
  2. フィルタリング後の値の合計を sum() で求める
  3. 合計を len() で取得した要素数で割る

コード例

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)

実行結果

150.0

この例では、値が「100」「0」「200」の3つありますが、ゼロの「bar」が除外されるため、(100 + 200) ÷ 2 = 150.0 という平均が計算されます。

reduceを使う方法について

なお、functools.reduce を使って同様の処理を行うことも可能ですが、このような単純なタスクには過剰であり、リスト内包表記を使う場合と比べて可読性が大きく低下します。特別な理由がない限り、上記のようなリスト内包表記+sum() の組み合わせをおすすめします。

  1. Pythonで辞書のすべての値を取得・出力する方法

    Pythonの辞書(dict)オブジェクトには、すべての値を簡単に取得できるvalues()メソッドが標準で用意されています。このメソッドを呼び出すと、辞書に格納された全ての値が dict_values オブジェクトとして返されます。values()メソッドを使う基本的な方法以下の例では、辞書 D1 のすべての値を values() メソッドで取得しています。戻り値はビューオブジェクトのため、リストとして扱いたい場合は list() 関数で変換すると便利です。>>> D1 = {1:a, 2:b, 3:c} >>> D1.values() dict_valu

  2. Pythonで辞書(dict)のすべてのキーを取得・表示する方法

    Pythonでは、辞書(dict)オブジェクトが持つ keys() メソッドを使うことで、すべてのキーを簡単に取得できます。このメソッドは辞書内の全キーを含むビューオブジェクト(dict_keys)を返します。 keys() メソッドでキーを取得する まずは基本的な使い方を見てみましょう。次の例では、3つのキーと値を持つ辞書から、すべてのキーを取り出しています。 >>> D1 = {1:a, 2:b, 3:c} >>> D1.keys() dict_keys([1, 2, 3]) >>> list(D1.keys()) [1, 2, 3]