import pandas as pd


def format_weight(weight: dict, to=1) -> dict:
    """
    对权重的小数点进行截取,到指定权重
    @param weight:
    @param to: 指定权重
    @return:
    """
    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() == to:
        return dict(weight_series)
    elif weight_series.sum() < to:
        weight_series[minidx] += to - weight_series.sum()
    elif weight_series.sum() > to:
        weight_series[maxidx] += to - 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, 56: 0.36}))