如何通过Python中的公式对字典值进行加权

时间:2018-03-19 04:33:43

标签: python dictionary

我有一个字典公式。这是我的公式:

result = (1/1 * value1) + (1/2 * value2) + (1/3*value3) + ..N

这是我的示例词典:

StudentGrades = {0: [1, 2, 3, 4], 1: [5, 8, 10]} .

所以它应该返回{0: 4, 1: 12.33}

这是我的代码

avgDict = {}
x = 1
for k,v in StudentGrades.items():
    avgDict[k] = float(sum(1 / x * v))
    x += 1

我的实际代码返回{0: 10.0, 1: 0.0}。 那么请你能解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

numpy为此提供了解决方案:

import numpy as np

StudentGrades = {0: [1, 2, 3, 4], 1: [5, 8, 10]}

Result = {k: np.dot(v, [1/i for i in range(1, len(v)+1)])\
             for k, v in StudentGrades.items()}

# {0: 4.0, 1: 12.333333333333332}