Я хотел бы нормализовать значения словаря Python, сохраняя при этом нижнюю границу для каждого значения, где нижняя граница задается как 1 / (10 * n), где n - количество значений в словаре.
Значения словаря d можно нормализовать, как показано ниже.
from __future__ import division
d = {1:0.5, 2: 1.5, 3: 2.0, 4: 0.02, 5: 3.1}
total = sum(d.values())
d = {k: v / total for k, v in d.iteritems()}
print d
Нижняя граница в этом случае равна 0,02
lb = 1 / (10 * len(d.keys()))
print lb
И некоторые значения меньше, чем нижняя граница после нормализации.Проблема в том, что если я установлю значения меньше фунта на фунт, сумма значений станет больше единицы.Следующий подход не работает
D = dict(zip(d.keys(),[lb if i/total < lb else i/total for i in d.values()]))
print sum(D.values())
Нам нужен способ многократно нормализовать и устанавливать lb до тех пор, пока все значения не станут больше lb, а сумма значений не станет 1. Что бы Python-способ решил эту проблему?