如果您不知道键的数量和键的名称,如何将总和不为 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}
请您参考如下方法:
您的目标是归一化:计算总和并将所有元素除以该总和:
total_inv = 1.0/sum(a.values())
for key,val in a.items():
a[key] = val*total_inv
或者更短(如 @Jean-FrançoisFabre 所说)使用字典理解:
total_inv = 1.0/sum(a.values())
a = {k:v*total_inv for k,v in a.items()}
但这将构建一个新字典,因此不会更新对旧字典的引用。
在代码中我们计算 1.0/sum(..) 因为除法通常比乘法更昂贵,因此可以提高一些效率。
