python-3.x 舍入dict中的浮点值

cyvaqqii  于 2023-02-17  发布在  Python
关注(0)|答案(3)|浏览(180)

我很难对字典中的浮点值进行四舍五入。为了生成字典,我使用了:

[{i: x.count(i)/float(len(x)) for i in x} for x in l]

我的字典是:

P = [{'A': 0.700000000, 'B': 0.255555555}, {'B': 0.55555555, 'C': 0.55555555}, {'A': 0.255555555, 'B': 0.210000000, 'C': 0.2400000000}]

我需要:

P = [{'A': 0.70, 'B': 0.25}, {'B': 0.55, 'C': 0.55}, {'A': 0.25, 'B': 0.21, 'C': 0.24}]
j2datikz

j2datikz1#

这是一个相当简单的方法,但是.7000将变成.7

舍入

for dict_value in P:
        for k, v in dict_value.items():
            dict_value[k] = round(v, 2)

[{'A': 0.7, 'B': 0.26}, {'C': 0.56, 'B': 0.56}, {'A': 0.26, 'C': 0.24, 'B': 0.21}]

截断

for dict_value in P:
    for k, v in dict_value.items():
        dict_value[k] = float(str(v)[:4])
[{'A': 0.7, 'B': 0.25}, {'C': 0.55, 'B': 0.55}, {'A': 0.25, 'C': 0.24, 'B': 0.21}]

转换为字符串时去掉了0.700000中多余的0,这就是为什么它仍然显示为0.7而不是0.70

u91tlkcl

u91tlkcl2#

为了简洁,我们可以牺牲一些可读性:

[{k: round(v, 2) for k, v in dct.items()} for dct in P]
2cmtqfgy

2cmtqfgy3#

你可以先把它转换成df,然后再取整:

pd.DataFrame([dct]).round(2)

相关问题