Python dict中的浮点值舍入

Python dict中的浮点值舍入,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我正在努力将字典中的浮动值舍入。要生成我使用的词典,请执行以下操作: [{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':

我正在努力将字典中的浮动值舍入。要生成我使用的词典,请执行以下操作:

[{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}]

这是一个相当简单的方法。然而,.7000将成为公正的

四舍五入

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}]
截断

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

您考虑过使用
round
?有很多Q,关于舍入浮动,为什么你认为“在dict中”会有所不同?还有,为什么你要用两个不同的版本来标记-你实际使用的是哪一个?你得到的是
0.56
而不是
0.55
,这是舍入,并不是真正切断多余的数字。如果这是你想要的,你需要修改一下代码才能做到;请注意,我不是OP.Oops。甚至没有查看OP的数据集中的:)float(str(v)[:4])正在工作,但一般来说,如果值大于10,它将失败。您可以使用
v=(int(v*100))/100.0
截断多余的数字。