如果您不知道键的数目和键的名称,如何将不等于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/