import pandas as pd def format_weight(weight: dict) -> dict: weight_series = pd.Series(weight) weight_series = weight_series.fillna(0) minidx = weight_series[weight_series > 0].idxmin() maxidx = weight_series.idxmax() weight_series = weight_series.apply(lambda x: round(x, 2)) if weight_series.sum() == 1: return dict(weight_series) elif weight_series.sum() < 1: weight_series[minidx] += 1 - weight_series.sum() elif weight_series.sum() > 1: weight_series[maxidx] += 1 - weight_series.sum() return dict(weight_series.apply(lambda x: round(float(x), 2))) if __name__ == '__main__': print(format_weight({19: 0.13, 27: 0.17, 31: 0.35, 56: 0.36}))