2015-09-07 53 views
1

我很努力地整理字典中的浮點值。要生成我用的字典:在字典中捨去浮點值

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

你有沒有考慮過使用'round'?已經有很多Q和AS了,你爲什麼認爲*「在字典」*使它有什麼不同?另外,爲什麼你用兩個不同的版本標記 - 你實際使用的是哪一個? – jonrsharpe

回答

3

這是一個相當簡單的方法來做到這一點。然而,.7000將成爲只是0.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}] 

0.700000截斷

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的,這就是爲什麼它仍然顯示爲0.7而不是0.70

+0

而你得到'0.56'而不是'0.55' – jonrsharpe

+0

這是四捨五入的,並不是真的會切掉多餘的數字。如果這是你想要的,你需要稍微修改代碼來做到這一點。 – electrometro

+0

我知道;請注意,我不是OP。 – jonrsharpe