web-dev-qa-db-ja.com

辞書のリストから平均値を取得する

辞書のリストがあります。それを言いましょう

total = [{"date": "2014-03-01", "value": 200}, {"date": "2014-03-02", "value": 100}{"date": "2014-03-03", "value": 400}]

私はそれから最大、最小、平均値を取得する必要があります。以下のコードで最大値と最小値を取得できます。

print min(d['value'] for d in total)
print max(d['value'] for d in total)

しかし今、私はそれから平均値を取得する必要があります。どうやるか?

7
Gereltod

値の合計をリストの長さで割るだけです。

_print sum(d['value'] for d in total) / len(total)
_

整数の除算は整数値を返すことに注意してください。これは、_[5, 5, 0, 0]_の平均が_2_ではなく_2.5_になることを意味します。より正確な結果が必要な場合は、float()値を使用できます。

_print float(sum(d['value'] for d in total)) / len(total)
_
15
catavaran
reduce(lambda x, y: x + y, [d['value'] for d in total]) / len(total)

カタバランのAnwserはより簡単で、ラムダは必要ありません

2

辞書全体で作業するには、同じもののより一般的な実装が必要でした。したがって、ここに1つの簡単なオプションがあります。

def dict_mean(dict_list):
    mean_dict = {}
    for key in dict_list[0].keys():
        mean_dict[key] = sum(d[key] for d in dict_list) / len(dict_list)
    return mean_dict

テスト:

dicts = [{"X": 5, "value": 200}, {"X": -2, "value": 100}, {"X": 3, "value": 400}]
dict_mean(dicts)
{'X': 2.0, 'value': 233.33333333333334}
1
dsalaj