如果您不知道键的数目和键的名称,如何将不等于1的概率转换为等于1的概率?
例如:

a = {'g' = 0.1, 'b' = 0.05, 'u' = 0.15, 'i' = 0.2}


至:

a = {'g' = 0.2, 'b' = 0.1, 'u' = 0.3, 'i' = 0.4}

最佳答案

您打算做的事情叫归一化:您计算sum并将所有元素除以该总和:

total_inv = 1.0/sum(a.values())
for key,val in a.items():
    a[key] = val*total_inv


甚至更短(如@Jean-FrançoisFabre所说)使用dict理解:

total_inv = 1.0/sum(a.values())
a = {k:v*total_inv for k,v in a.items()}


但这将构造一个新字典,因此不会更新对旧字典的引用。

在代码中我们计算1.0/sum(..)是因为除法通常比乘法昂贵,因此可以提高效率。

关于python - 您如何将不等于1的概率转换为可以做到的概率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42193044/

10-12 13:32